LeetCode|LeetCode 每日一题 [52] 表示数值的字符串

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 【LeetCode|LeetCode 每日一题 [52] 表示数值的字符串】正则表达式 不过我还没写出来.......
解法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; } }

    推荐阅读