leetcode-65-有效的数字
来源:互联网 发布:陕西师大网络教育官网 编辑:程序博客网 时间:2024/04/30 21:10
验证给定的字符串是否为数字。
这个题最恶心之处在于给你的样例太少,而实际中的情况却非常复杂。很多很多意想不到的情况,不断地WA......
这个题做的人难受的一批,查了一下还是我太嫩了,大佬们都是用有限状态机来做的(不会、不存在的、下一个...)......
下面是AC代码:
import java.util.Scanner;public class leetcode65 { public boolean isNumber(String s) { s = s.trim(); //删除前后空格 if(s.length()<1) //那就是全是空格咯 return false; boolean e=false , dian=false , number = false , fuhao = false; /* e 字母e,大坑 fuhao 有没有正负号 +- dian 有没有点 . number 有无数字 */ for (int i = 0 ; i < s.length() ; i++ ) { if ( s.charAt(i) == '-' || s.charAt(i) == '+' ){ //判断正负号 if(!fuhao && (i==0 || s.charAt(i-1)=='e' && i < s.length()-1 )) fuhao = true; //符号变成有(true) else return false; } else if(s.charAt(i)=='.'){ //判断小数点的有无 if(s.length()!=1 && !dian && !e) dian = true;//点变成有 else return false; } else if(s.charAt(i)=='e'){ //坑爹的字母e if(number && !e && i<s.length()-1){ // e前面必须要有数字,所以引入number来判断 e = true; fuhao = false; // 因为有像 24e+6,7e-4 这种情况,一旦出现e了,fuhao-->false } else return false; } else if(s.charAt(i)>='0' && s.charAt(i)<='9'){ if(!number) //判断是否输入了数字 number=true; } else { return false; } } if(number) return true; else return false; } public static void main(String[] args) { Scanner map = new Scanner(System.in); leetcode65 lt = new leetcode65(); String s = map.next(); System.out.println(lt.isNumber(s)); }}
阅读全文
0 0
- leetcode-65-有效的数字
- [LeetCode]Valid Number有效数字
- LeetCode OJ 之 Valid Number (有效数字的判断)
- 有效数字的保留
- 【LeetCode】- Valid Number(有效数字)
- leetCode 65.Valid Number (有效数字)
- 有效数字
- 有效数字
- 有效数字
- 【LeetCode】- Valid Parentheses(有效的括号)
- 98.leetcode-判断是否有效的二叉排序树
- LeetCode-20-Valid Parentheses(有效的括号)
- input 有效数字
- float 有七位有效数字
- 华为OJ--有效数字
- LintCode:有效数字
- 计算器 保留有效数字
- lintcode,有效数字
- 大哥教你用minio
- linux内核GPIO编程说明
- 穷举法
- 自顶向下,逐步求精
- WPF中ListBox滚动条自动滚动
- leetcode-65-有效的数字
- 棋牌麻将
- 将S3C2416的RS232改为RS485(修改内核驱动)
- 微信公众号发送模板消息接口
- Angularjs自定义指令(directive)
- mysql 中的 int(m)与zerofill使用
- 处理流_小记
- 【PHP进阶学习】——垃圾回收机制
- Laravel从数据库导出Excel