剑指offer——53.表示数值的字符串

来源:互联网 发布:ubuntu谷歌拼音输入法 编辑:程序博客网 时间:2024/06/07 12:02

题目描述

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

代码

思路1:正则表达式

function isNumeric(s){    // write code here    return s.match(/[\+\-]?[0-9]*(\.[0-9]*)?([eE][\+-]?[0-9]+)?/g)[0]==s;}

思路2:
image

function isNumeric(s){    // write code here    var i = 0;    if(s.charAt(i)=='+' || s.charAt(i)=='-' || isNum(s.charAt(i))){        while(s.charAt(++i)!='\0' && isNum(s.charAt(i)));        if(s.charAt(i)=='.'){                if(isNum(s.charAt(++i))){                    while(s.charAt(++i)!='\0' && isNum(s.charAt(i)));                    if(s.charAt(i)=='e'||s.charAt(i)=='E'){                        i++;                        if(s.charAt(i)=='+' || s.charAt(i)=='-' || isNum(s.charAt(i))){                            while(s.charAt(++i)!='\0' && isNum(s.charAt[i]));                            if(s.charAt[i]=='\0') return true;                            else return false;                        }else return false;                    }else if(s.charAt(i)=='\0') return true;                    else return false;                }else if(s.charAt(++i)=='\0') return true;                else return false;         }else if(s.charAt[i]=='e'||s.charAt[i]=='E'){                i++;                if(s.charAt(i)=='+' || s.charAt(i)=='-' || isNum(s.charAt(i))){                    while(s.charAt(++i)!='\0' && isNum(s.charAt(i)));                    if(s.charAt(i)=='\0') return true;                    else return false;                }else return false;         }else if(s.charAt(i)=='\0') return true;             else return false;                 }else return false;}function isNum(ch){    if(ch>='0'||ch<='9'){        return true    }else{        return false    }}
原创粉丝点击