剑指offer20题表示数值的字符串:这题实在是太优雅了( 二 )

大佬的Java版:
class Solution {public boolean isNumber(String s) {//有限状态机// 2.小数点 3.E/e 4. 数字字符 5. -+if(s == null || s.length() <= 0){return false;}char[] res = s.trim().toCharArray();if(res.length <= 0) return false;int n = res.length;boolean is_dot = false;boolean is_e_or_E = false;boolean is_num = false;for(int i = 0; i < n; i++){if(res[i] >= '0' && res[i] <= '9'){is_num = true;} else if(res[i] == '.'){//-+ 8.8.8.8// 前面:不能有重复的小数点,也不能出现 e/Eif(is_dot || is_e_or_E){return false;}is_dot = true;} else if(res[i] == 'e' || res[i] == 'E'){// 前面必须要有一个数字 || 前面不能出现重复的 e/Eif(is_e_or_E || !is_num){return false;}is_e_or_E = true;is_num =false;//11E+ 11E} else if(res[i] == '-' || res[i] == '+'){if(i!=0 && res[i-1] != 'e' && res[i-1] != 'E'){return false;}} else {return false;}}return is_num;}}3、C++版战绩

剑指offer20题表示数值的字符串:这题实在是太优雅了

文章插图
总结
高情商:考察编程代码严谨能力!低情商:不太想要你 。
开玩笑的蛤,不要太当真,不管什么问题,都要能够具备解决它的能力,这题虽然比较难受,但是还是学到了一点东西的 。发现了一个宝藏博主:https://www.cnblogs.com/Shirlies/p/4666744.html大佬题解页面:https://www.playoffer.cn/84.html

经验总结扩展阅读