LeetCode 表示数值的字符串 [中等]
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、"5e2"、"-123"、"3.1416"、"0123"都表示数值,但"12e"、"1a3.14"、"1.2.3"、"+-5"、"-1E-16"及"12e+5.4"都不是。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/biao-shi-shu-zhi-de-zi-fu-chuan-lcof
题目分析
解法1
正则表达式 不过我还没写出来.......
解法2
遍历循环一个一个的进行判断
代码实现
public class IsNumber {
public static void main(String[] args) {
System.out.println(isNumber("1.2.3"));
}
public static boolean isNumber2(String s) {
if (s == null || s.length() == 0) {
return false;
}
String regex = "[.+-]";
return s.matches(regex);
}
public static boolean isNumber(String s) {
if (s == null || s.length() == 0) {
return false;
}
boolean numSeen = false;
boolean dotSeen = false;
boolean eSeen = false;
char[] str = s.trim().toCharArray();
for (int i = 0; i < str.length; i++) {
if (str[i] >= '0' && str[i] <= '9') {
numSeen = true;
} else if (str[i] == '.') {
if (dotSeen || eSeen) {
return false;
}
dotSeen = true;
} else if (str[i] == 'e' || str[i] == 'E') {
if (eSeen || !numSeen) {
return false;
}
eSeen = true;
numSeen = false;
} else if (str[i] == '-' || str[i] == '+') {
if (i != 0 && str[i - 1] != 'e' && str[i - 1] != 'E') {
return false;
}
} else {
return false;
}
}
return numSeen;
}
}
网友评论