标签:flag || turn 初始 返回 numa public lse class
分类讨论的项比较多
先观察给的例子,还有题目给的提示——valid答案中可以包含的字符
发现:
"+ - "要么在开头,要么紧跟着e,只有这两个位置
"e",前后必须有数字,且之前不能出现过e
". ",前面不能出现过e或". "
所以我们可以用几个flag
seenNum表示之前出现过数字
seenNumAfterE 表示e之后有数字
dot表示之前出现过". "
e表示之前出现过e
注意初始化的时候seenNumAfterE = true,因为s不一定包含e,等出现e再将它设为false。其它flag都设为false
最后返回 seenNum && seenNumAfterE
1 class Solution { 2 public boolean isNumber(String s) { 3 boolean seenNum = false, seenNumAfterE = true; 4 boolean dot = false, e = false; 5 s = s.trim(); //去掉首尾的空格 6 int count = 0; 7 for(char i : s.toCharArray()){ 8 if(i >= ‘0‘ && i <= ‘9‘){ 9 seenNum = true; 10 seenNumAfterE = true; 11 }else if(i == ‘.‘){ 12 if(e || dot) 13 return false; 14 dot = true; 15 }else if(i == ‘e‘){ 16 if(e || !seenNum) 17 return false; 18 seenNumAfterE = false; 19 e = true; 20 }else if(i == ‘+‘ || i == ‘-‘){ 21 if(count != 0 && s.charAt(count - 1) != ‘e‘) 22 return false; 23 }else 24 return false; 25 26 count++; 27 } 28 29 return seenNum && seenNumAfterE; 30 } 31 }
标签:flag || turn 初始 返回 numa public lse class
原文地址:https://www.cnblogs.com/hwd9654/p/10987558.html