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