zoukankan      html  css  js  c++  java
  • Valid Number

    Valid Number

    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.

     1 public class Solution {
     2     public boolean isNumber(String s) {
     3         boolean result = true;
     4         s = s.trim();//去掉前面和后面的空格
     5         if(0 != s.length() && (s.charAt(0) == '+' || s.charAt(0) == '-'))
     6             s = s.substring(1, s.length());
     7         if(0 == s.length())
     8             return false;
     9         boolean flag_point = false;
    10         boolean flag_e = false;//记录小数点和字母e
    11         
    12         
    13         for(int i = 0; i < s.length(); i++){
    14             char ch = s.charAt(i);//第i个字符
    15             if('.' == ch){                
    16                 if(flag_e || flag_point || !((i + 1 < s.length() && s.charAt(i + 1) >= '0' && s.charAt(i + 1) <= '9')||
    17                     (i - 1 >= 0 && s.charAt(i - 1) >= '0' && s.charAt(i - 1) <= '9'))//e出现过就不能出现小数点了
    18                     )
    19                 {
    20                     return false;
    21                 }
    22                 flag_point = true;
    23             }//小数点后面或者前面有数字即可
    24             if('e' == ch){                                    
    25                 if(flag_e || 
    26                         !((i + 1 < s.length() && (s.charAt(i + 1) >= '0' && s.charAt(i + 1) <= '9' || s.charAt(i + 1) == '+'|| s.charAt(i + 1) == '-'))&&
    27                                 (i - 1 >= 0 && (s.charAt(i - 1) >= '0' && s.charAt(i - 1) <= '9' || s.charAt(i - 1) == '.'))))
    28                 {
    29                     return false;
    30                 }
    31                 flag_e = true;
    32             }//小数点和e的个数
    33             if(flag_e && (ch == '+' || ch == '-')){
    34                 if(!(s.charAt(i - 1) == 'e') ||
    35                         !(i + 1 < s.length() && (s.charAt(i + 1)>= '0' && s.charAt(i + 1) <= '9')))
    36                     return false;
    37             }//+ 出现过e
    38             else if(!((ch >= '0' && ch <= '9') || ch == '.' || ch == 'e')){
    39                 return false;
    40             }
    41         }
    42         
    43         return result;
    44     }
    45 }

    还是要先看一下哪一些是合理的,可以先百度一下。在实现,要不然后面要针对测试用例一个个修改,严重拉低通过率

  • 相关阅读:
    javascript进阶一
    javascript基础
    前端开发工程师——网易云课堂
    win10,软件, 发布者不受信任怎么办
    oracle10g如何配置客户端
    ASPxGridView中DetailRow的使用
    vb中&和+的区别
    nvl
    substr
    ORA-01791: 不是 SELECTed 表达式
  • 原文地址:https://www.cnblogs.com/luckygxf/p/4101258.html
Copyright © 2011-2022 走看看