leetcode 65. 有效数字-java实现
题目所属分类
比较麻烦的科学计数法的模拟题
原题链接

题解

class Solution {
public boolean isNumber(String s) {
//去掉空格
int l = 0;
int r = s.length()-1 ;
while(l <= r && s.charAt(l) == ' ') l++ ;
while( l <= r && s.charAt(r) == ' ' )r-- ;
if(l > r ) return false;//说明字符串空的
s = s.substring(l , r + 1);
//前面正负号 去掉
if(s.charAt(0) == '+' || s.charAt(0) == '-') s = s.substring(1);
//没有去掉
if(s.length() == 0) return false;
//只有这种符号去掉
if(s.charAt(0) == '.' && (s.length() == 1 || s.charAt(1) == 'e' || s.charAt(1) == 'E'))
return false;
//记录. e 的个数了
int dot = 0 , e = 0 ;
for(int i = 0 ; i < s.length() ; i++){
if(s.charAt(i) == '.'){
if(dot > 0 || e > 0) return false;
dot ++ ;
}else if(s.charAt(i) == 'e' || s.charAt(i) == 'E'){
//e的前面是空的 后面是空的 e之前存在过 返回false
if(i == 0 || i+1 == s.length() || e > 0) return false ;
//如果e的后面是正负号的话
if(s.charAt(i+1) == '+' || s.charAt(i+1) == '-'){
//e后面还没有数
if(i+2 == s.length()) return false;
//否则正负号跳过
i++ ;
}
e++ ;
}else if(s.charAt(i) < '0' || s.charAt(i) > '9')return false ;
}
return true ;
}
}

浙公网安备 33010602011771号