• 表示数值的字符串-剑指Offer


    表示数值的字符串

    题目描述

    请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。

    思路

    1. 数值的结构是'+/-' + '整数' + '.' + '整数' + 'E/e' + '+/-' + '整数'
    2. 按结构一个个的匹配,如果用if语句可以只匹配一次

    代码

    public class Solution {
        public boolean isNumeric(char[] str) {
            if (str == null || str.length == 0) {
                return false;
            }
            int point = 0;
            int length = str.length;
            if (str[0] == '-' || str[0] == '+') {
                point++;
            }
            boolean result = true;
            while (point < length && str[point] >= '0' && str[point] <= '9') {
                point++;
            }
            if (point < length) {
                if (str[point] == '.') {
                    point++;
                    while (point < length && str[point] >= '0' && str[point] <= '9') {
                        point++;
                    }
                    if (point == length) {
                        return true;
                    }
                    if (str[point] == 'e' || str[point] == 'E') {
                        result = isE(str, point);
                    }else {
    	                return false;
    	            }
                } else if (str[point] == 'e' || str[point] == 'E') {
                    result = isE(str, point);
                } else {
                    result = false;
                }
            }
            return result;
        }
        public boolean isE(char[] str, int start) {
            if (str[start] != 'e' && str[start] != 'E') {
                return false;
            }
            start++;
            if (start == str.length) {
    	        	return false;
    	        }
            if (str[start] == '+' || str[start] == '-') {
                start++;
            }
            if (start == str.length) {
                return false;
            }
            while (start < str.length && str[start] <= '9' && str[start] >= '0') {
                start++;
            }
            if (start == str.length) {
                return true;
            } else {
                return false;
            }
    
        }
    }
  • 相关阅读:
    并发和多线程(二)--启动和中断线程(Interrupt)的正确姿势
    并发和多线程(一)--创建线程的方式
    MySQL系列(十二)--如何设计一个关系型数据库(基本思路)
    Elasticsearch系列(二)--query、filter、aggregations
    Spark-python入门
    python中的Turtle模块
    pytorch显示网络结构
    风格迁移(2)-Fast Style Transfer
    风格迁移(1)-格拉姆矩阵
    使用GAN生成图片
  • 原文地址:https://www.cnblogs.com/rosending/p/5689707.html
Copyright © 2020-2023  润新知