美文网首页
剑指offer 第22题:表示数值的字符串

剑指offer 第22题:表示数值的字符串

作者: 灰化肥发黑会挥发 | 来源:发表于2018-12-27 13:22 被阅读0次

    题目:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串“+100”、“5e2”、“-123”。

    解题思路:表示数值的字符串的模式为A[.[B]][e|EC].[B][e|EC],其中A可能为以'+|-'开头的整数,B为整数,C与A相同。在判断一个字符串是否符合上述表达式的时候,首先从头到尾扫描字符串,先判断A,在遇到小数点以后,再开始判断B,在碰到e或者E的时候,开始判断C。

    public class Numeric {
        int index = 0;
        public boolean isNumeric(char[] str){
            if(str==null) return false;
            boolean numermic = scanInteger(str,index);
            if(str[index]=='.'){
                index++;
                numermic = scanUnsigendInteger(str,index)||numermic;
            }
            if(str[index]=='e'||str[index]=='E'){
                index++;
                numermic = numermic&&scanInteger(str,index);
            }
            if(index==str.length) return numermic;
            else return false;
        }
    
        public boolean scanInteger(char[] str,int index){
            if(str[index]=='+'||str[index]=='-'){
                index++;
            }
            return scanUnsigendInteger(str ,index);
        }
        public boolean scanUnsigendInteger(char[] str,int index){
            int firstIndex = index;
            while(str[index]>='0'&&str[index]<='9')
                index++;
            return index>firstIndex;
        }
    }
    
    

    相关文章

      网友评论

          本文标题:剑指offer 第22题:表示数值的字符串

          本文链接:https://www.haomeiwen.com/subject/kvdrlqtx.html