[LeetCode] 65. Valid Number Java
题目:
Validate if a given string is numeric.
Some examples:"0" => true" 0.1 " => true"abc" => false"1 a" => false"2e10" => true
Note: It is intended for the problem statement to be ambiguous. You should gather all requirements up front before implementing one.
Update (2015-02-10):
The signature of the C++ function had been updated. If you still see your function signature accepts a const char * argument, please click the reload button to reset your code definition.
题意及分析:判断一个字符串是否能转化为合法的数字,主要注意至多只能一个小数点和e,e后面不能有小数点第一位或最后一位可以为小数点,+/-只能出现在第一位或者e后面的第一位。
代码:
class Solution {
public boolean isNumber(String s) { //判断一个字符串是不是合法的数字
s = s.trim();
boolean pointSeen = false;
boolean eSeen = false;
boolean isNumber = false;
for(int i=0;i<s.length();i++){
char temp = s.charAt(i);
if(temp>='0' && temp<='9'){
isNumber = true;
}else if(temp == '.'){
if(eSeen || pointSeen)
return false;
pointSeen = true;
}else if(temp == 'e'){
if(eSeen || !isNumber)
return false;
eSeen = true;
isNumber = false;
}else if(temp == '+' || temp=='-'){ //只能在首位或者isNumber后面为+/-
if(i!=0 && s.charAt(i-1)!='e' )
return false;
isNumber = false;
}else
return false;
}
return isNumber;
}
}

浙公网安备 33010602011771号