剑指offer--20表示数值的字符串
Posted Anrys
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer--20表示数值的字符串相关的知识,希望对你有一定的参考价值。
题目
代码
class Solution {
public boolean isNumber(String s) {
if (s == null || s.length() == 0) return false;
s = s.trim();//去掉首位空格
boolean numFlag = false;
boolean dotFlag = false;
boolean eFlag = false;
for (int i = 0; i < s.length(); i++) {
//判定为数字,则标记numFlag
if (s.charAt(i) >= '0' && s.charAt(i) <= '9') {
numFlag = true;
//判定为. 需要没出现过.并且没出现过e
} else if (s.charAt(i) == '.' && !dotFlag && !eFlag) {
dotFlag = true;
//判定为e,需要没出现过e,并且出过数字了
} else if ((s.charAt(i) == 'e' || s.charAt(i) == 'E') && !eFlag && numFlag) {
eFlag = true;
numFlag = false;//为了避免123e这种请求,出现e之后就标志为false,若再出现数字就变true
//判定为+-符号,只能出现在第一位或者紧接e后面
} else if ((s.charAt(i) == '+' || s.charAt(i) == '-') && (i == 0 || s.charAt(i - 1) == 'e' || s.charAt(i - 1) == 'E')) {
//其他情况,都是非法的
} else return false;
}return numFlag;
}
}
class Solution {
public boolean isNumber(String s) {
if(s == null || s.length() == 0) return false;
s = s.trim();
try{ double a = Double.parseDouble(s); }
catch (Exception e){ return false;}
char c = s.charAt(s.length()-1);
return (c >= '0' && c <= '9') || c == '.';
}
}
结果
以上是关于剑指offer--20表示数值的字符串的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode(剑指 Offer)- 20. 表示数值的字符串
[LeetCode]剑指 Offer 20. 表示数值的字符串