zoukankan      html  css  js  c++  java
  • Valid Number leetcode java

    题目

    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     }
  • 相关阅读:
    RabbitMQ系列教程之七:RabbitMQ的 C# 客户端 API 的简介
    RabbitMQ系列教程之六:远程过程调用(RPC)
    git无法提交,存在未提交的修改,在重新合并前或者撤销更改
    安装mysql提示3306端口已经被占用解决方案
    区块链学习一基本知识
    超级账本 --- ReadWriteSet的逻辑结构
    解决windows10 里vs2015 附件进程调试提示“此任务要求应用程序有提升的权限”
    Fabric V1 交易的生命周期
    sql 取首次投资的人
    Win10年度更新开发必备:VS2015 Update 3正式版下载汇总
  • 原文地址:https://www.cnblogs.com/springfor/p/3893598.html
Copyright © 2011-2022 走看看