剑指offer-表示数值的字符串
来源:互联网 发布:ichat for mac 编辑:程序博客网 时间:2024/05/29 17:15
题目描述
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。
解析
对于java有多种方法,这里首先提供一般的方法:分类处理
在牛客网上还看到各种解法,虽然都是依靠java强大的函数库或者是java自己的一些特性,有些投机取巧的意味,但也反映了思路的灵活性。
1、一般方法
public class Solution { boolean isNumeric(char[] s) { if(s.length==0) return false; if((s.length==1)&&(s[0]<'0'||s[0]>'9')) return false; if(s[0]=='+'||s[0]=='-'){ if(s.length==2&&(s[1]=='.')) return false; }else if((s[0]<'0'||s[0]>'9')&&s[0]!='.') return false;//首位既不是符号也不是数字还不是小数点,当然是false int i = 1; while((i<s.length)&&(s[i]>='0'&&s[i]<='9')) i++; if(i<s.length&&s[i]=='.'){ i++; //if(i>=s.length) return false; while((i<s.length)&&(s[i]>='0'&&s[i]<='9')) i++; } if(i<s.length&&(s[i]=='e'||s[i]=='E')){ i++; if((i<s.length)&&(s[i]=='+'||s[i]=='-')){ i++; if(i<s.length) while((i<s.length)&&(s[i]>='0'&&s[i]<='9')) i++; else return false; }else if(i<s.length){ while((i<s.length)&&(s[i]>='0'&&s[i]<='9')) i++; }else return false; } if(i<s.length) return false; return true; }}
2、正则表达式
public class Solution { public boolean isNumeric(char[] str) { String string = String.valueOf(str); return string.matches("[\\+-]?[0-9]*(\\.[0-9]*)?([eE][\\+-]?[0-9]+)?"); }}
3、借助java的异常处理类
public class Solution { public boolean isNumeric(char[] str) { try { double re = Double.parseDouble(new String(str)); } catch (NumberFormatException e) { return false; } return true; }}
0 0
- 剑指offer--表示数值的字符串
- 剑指offer 54-表示数值的字符串
- 《剑指offer》表示数值的字符串
- 剑指offer—表示数值的字符串
- 剑指offer:表示数值的字符串
- 剑指Offer--054-表示数值的字符串
- 《剑指offer》:[54]表示数值的字符串
- 剑指offer-表示数值的字符串
- 《剑指offer》-表示数值的字符串
- 剑指offer 表示数值的字符串
- 剑指offer-53.表示数值的字符串
- 剑指offer:表示数值的字符串
- 剑指Offer:表示数值的字符串
- 剑指offer--表示数值的字符串
- 剑指offer--表示数值的字符串
- 剑指offer:表示数值的字符串
- 剑指Offer---表示数值的字符串
- 【剑指Offer学习】【面试题54:表示数值的字符串】
- laravel中,提交表单后给出提示例如添加成功,添加失败等等
- Git使用Gitignore建立项目过滤规则
- Spring Boot使用方法小札(3):应用启动后做一些事
- [LeetCode] 118. Pascal's Triangle
- Android开发之获取Facebook应用的key hash
- 剑指offer-表示数值的字符串
- 动画框架
- AS Import Project 常见错误解决
- HOOK 几种实现方式区别
- MyBatis 执行动态 SQL
- SQLServer查看备份文件信息
- Android Studio自定义模板代码
- iOS swift-相对程序整个窗口的frame
- 数据库多表查询