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;
}
}
推荐阅读
- 每日一话(49)——一位清华教授在朋友圈给大学生的9条建议
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- leetcode|leetcode 92. 反转链表 II
- #2018.4.12#每日一问#+简宁+D03+我是怎样做读书笔记的
- 每日微习惯诞生|每日微习惯诞生 16/100
- 二叉树路径节点关键值和等于目标值(LeetCode--112&LeetCode--113)
- --木木--|--木木-- 第二课作业#翼丰会(每日一淘6+1实战裂变被动引流# 6+1模式)
- LeetCode算法题-11.|LeetCode算法题-11. 盛最多水的容器(Swift)
- 03月30日|03月30日|Day92|每日复盘
- [白雪扇贝每日一句特训班]week5复盘——相信持续的力量