题目:https://leetcode-cn.com/problems/biao-shi-shu-zhi-de-zi-fu-chuan-lcof/
答案:
1、偷懒法
public boolean isNumber(String s) {
if(s.endsWith("f")||s.endsWith("F")||s.endsWith("d")||s.endsWith("D")) return false;
try {
Double.valueOf(s);
return true;
}catch (Exception ex){
return false;
}
}
2、全匹配
public boolean isNumber(String s) {
if(s==null || s.length() == 0) return false;
boolean beforeNum = false, beforeDot = false ,beforeE = false;
char[] chars = s.trim().toCharArray();
for(int i=0;i<chars.length;i++){
if(chars[i]>='0' && chars[i]<='9') beforeNum = true;
else if(chars[i] == '.'){
if(beforeDot || beforeE) return false;
beforeDot = true;
}else if(chars[i] == 'E' || chars[i] == 'e'){
if(beforeE || !beforeNum) return false;
beforeE = true;
beforeNum = false;
}else if(chars[i] == '-' || chars[i] == '+') {
if (i != 0 && chars[i - 1] != 'e' && chars[i - 1] != 'E') return false;
}else{
return false;
}
}
return beforeNum;
}