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

题目:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串“+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;
    }
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,403评论 0 2
  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 9,055评论 0 13
  • 前言 最先接触编程的知识是在大学里面,大学里面学了一些基础的知识,c语言,java语言,单片机的汇编语言等;大学毕...
    oceanfive阅读 3,130评论 0 7
  • 题干 请实现一个函数用来判断字符串是否表示数值(包括整数和小数),例如,字符串 +100、 5e2、 -123、 ...
    懒人成长阅读 378评论 0 0
  • 当心静如水的时候,你就会会被群山环绕,这连绵不断的山,不正是那满满的高低起伏的情绪嘛,如若因为一些琐事引起悲观的思...
    SmithAndy阅读 125评论 0 1