博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Valid Number leetcode java
阅读量:6679 次
发布时间:2019-06-25

本文共 2529 字,大约阅读时间需要 8 分钟。

题目

Validate if a given string is numeric.

Some examples:

"0" => true
" 0.1 " => true
"abc" => false
"1 a" => false
"2e10" => true

Note: It is intended for the problem statement to be ambiguous. You should gather all requirements up front before implementing one.

 

题解

正则表达式。

 本文代码引用自:http://blog.csdn.net/fightforyourdream/article/details/12900751

代码:

 1     
public 
boolean isNumber(String s) {
 2         
if(s.trim().isEmpty()){  
 3             
return 
false;  
 4         }  
 5         String regex = "[-+]?(\\d+\\.?|\\.\\d+)\\d*(e[-+]?\\d+)?";  
 6         
if(s.trim().matches(regex)){  
 7             
return 
true;  
 8         }
else{  
 9             
return 
false;  
10         }  
11     }

 

如果按照判断的方法可以如下:

 1 
public 
static 
boolean isNumber(String s) {
 2         
int i = 0;
 3         
while(s.charAt(i) == ' '){    
//
 移除前导whitespace
 4 
            i++;
 5             
if(i >= s.length()){
 6                 
return 
false;
 7             }
 8         }
 9         
if(s.charAt(i)=='+' || s.charAt(i)=='-'){    
//
 忽略符号位
10 
            i++;
11         }
12         
int j = s.length()-1;
13         
while(s.charAt(j) == ' '){    
//
 移除后缀whitespace
14 
            j--;
15         }
16         
if(i <= j){
17             s = s.substring(i, j+1);
18         }
else{
19             
return 
false;
20         }
21         
22         
int dot = -1;    
//
 记录点的位置
23 
        
int ee = -1;    
//
 记录e的位置
24 
        
for(i=0; i<s.length(); i++){
25             
if(dot==-1 && s.charAt(i)=='.'){
26                 dot = i;
27             }
else 
if(ee==-1 && s.charAt(i)=='e'){
28                 ee = i;
29                 
if(i+1<s.length() && (s.charAt(i+1)=='-' || s.charAt(i+1)=='+')){
30                     i++;
31                 }
32             }
else{
33                 
if(Character.isDigit(s.charAt(i))){
34                     
continue;
35                 }
else{
36                     
return 
false;
37                 }
38             }
39         }
40         
41         
//
xxx.xxexx
42 
        String startStr, midStr, lastStr;
43         
if(dot==-1 && ee==-1){    
//
xxx  
44 
            startStr = s;    
//
 xxx
45 
            
if(startStr.length()<1){
46                 
return 
false;
47             }
48         }
else 
if(dot!=-1 && ee==-1){    
//
xxx.yyy  
49 
            startStr = s.substring(0, dot);    
//
 xxx
50 
            midStr = s.substring(dot+1);        
//
 yyy
51 
            
if(startStr.length()<1 && midStr.length()<1){
52                 
return 
false;
53             }
54         }
else 
if(dot==-1 && ee!=-1){    
//
 xxxeyyy
55 
            startStr = s.substring(0, ee);    
//
 xxx
56 
            
if(startStr.length()<1){
57                 
return 
false;
58             }
59             
if(ee+1<s.length() && (s.charAt(ee+1)=='-' || s.charAt(ee+1)=='+')){    
//
 xxxe-zz
60 
                lastStr = s.substring(ee+2);    
//
 zz
61 
            }
else{
62                 lastStr = s.substring(ee+1);
63             }
64             
if(lastStr.length() < 1){
65                 
return 
false;
66             }
67         }
else{        
//
xxx.yyezz
68 
            
if(dot>ee){        
//
 位置不对
69 
                
return 
false;
70             }
71             startStr = s.substring(0, dot);    
//
 xxx
72 
            midStr = s.substring(dot+1, ee);    
//
 yy
73 
            
if(startStr.length()<1 && midStr.length()<1){
74                 
return 
false;
75             }
76             
if(ee+1<s.length() && (s.charAt(ee+1)=='-' || s.charAt(ee+1)=='+')){
77                 lastStr = s.substring(ee+2);    
//
 zz
78 
            }
else{
79                 lastStr = s.substring(ee+1);
80             }
81             
if(lastStr.length() < 1){
82                 
return 
false;
83             }
84         }
85         
return 
true;
86     }

 

你可能感兴趣的文章
现代Web开发方法
查看>>
这可能是第二好的自定义 View 教程之绘制
查看>>
自制分布式漏洞扫描
查看>>
waf 绕过的技巧
查看>>
Android鬼点子 如此Q弹!
查看>>
MaxComputeSql性能调优
查看>>
Essay
查看>>
JB的测试之旅-项目流程规范
查看>>
《HTTP权威指南》第二部分 HTTP结构 笔记草稿
查看>>
应用 targetSdk 版本升级指导第二弹
查看>>
ElasticSearch学习笔记 - 钢钢更新
查看>>
网络编程之理论篇
查看>>
Android 面试题集合(2018)
查看>>
Python3入门机器学习(四)- kNN算法的学习与使用
查看>>
Three.js粒子特效,shader渲染初探
查看>>
SAP Cloud for Customer Price-计价简介
查看>>
写个Markdown插件,讲讲Chrome扩展开发
查看>>
CSS Grid布局
查看>>
阿里云马劲:保证云产品持续拥有稳定性的实践和思考
查看>>
Objective-C中浮点数表示时精度的小坑
查看>>