65. Valid Number
一、题目
1、审题
2、分析
判断所给字符串是否可以转化为小数类型。
二、解答
1、思路:
多层判断,转化为小数类型,可以很巧妙的采用多个 flag 进行记录是否符合浮点数定义:
①、"+" 或 “-” 符号只能出现在开头或则 e 的后一个字符
②、e 前边得有数字、后边得有整形数字
③、只能出现一次小数点 "."
public boolean isNumber(String s) { s = s.trim(); boolean pointSeen = false; // 出现了小数点 boolean eSeen = false; // 出现了 e boolean numberSeen = false; // 出现了数字 boolean numberAfterE = true; // 数字出现在 e 后边 for(int i = 0; i < s.length(); i++) { if('0' <= s.charAt(i) && s.charAt(i) <= '9') { numberSeen = true; numberAfterE = true; } else if(s.charAt(i)== '.' ) { if(eSeen || pointSeen) return false; pointSeen = true; } else if(s.charAt(i) == 'e') { // e 前边得有数字 if(eSeen || !numberSeen) return false; numberAfterE = false; eSeen = true; } else if(s.charAt(i) == '-' || s.charAt(i) == '+') { if(i != 0 && s.charAt(i-1) != 'e') return false; } else { return false; } } return numberSeen && numberAfterE; }