年薪60万的同事竟然不会用GitHub,是当场撕开皇帝新衣?还是加入夸夸群喊“大佬666”?
算法题:有效数字
"0" ✅"e9" ✅" 0.1 " ✅"abc" ❌"1 a" ❌"2e10" ✅
Double.parseDouble(s) 来糊弄过去,题目没那么傻,测试用例会让你当场去世。咱得上真活。• 开头可以有空格
• 可以有正负号
• 整数部分
• 可选的小数点
• 小数部分
• 可选的指数部分(e 或 E 后面跟个整数)
• 结尾还可以有空格
public boolean isNumber(String s) {s = s.trim();boolean seenDigit = false;boolean seenDot = false;boolean seenExp = false;for (int i = 0; i < s.length(); i++) {char c = s.charAt(i);if (Character.isDigit(c)) {seenDigit = true;} else if (c == '+' || c == '-') {// 只能出现在第一个位置或者 e/E 的后一位if (i != 0 && s.charAt(i - 1) != 'e' && s.charAt(i - 1) != 'E') {return false;}} else if (c == '.') {if (seenDot || seenExp) return false;seenDot = true;} else if (c == 'e' || c == 'E') {if (seenExp || !seenDigit) return false;seenExp = true;seenDigit = false; // 重新判断 e 之后是否有数字} else {return false;}}return seenDigit;}
"." 和 "3." 这种是合法数字,直接写死了 “没数字不行”,结果挂了好几个测试用例。后来才发现,小数点前后只要有一边有数字就行。最后,我为大家打造了一份deepseek的入门到精通教程,完全免费:https://www.songshuhezi.com/deepseek
也可以看我写的这篇文章《DeepSeek满血复活,直接起飞!》来进行本地搭建。
-END-
以上,就是今天的分享了,看完文章记得右下角点赞,也欢迎在评论区写下你的留言。