zoukankan      html  css  js  c++  java
  • 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.

    思路:

    这题我做的极其麻烦。但http://www.jiuzhang.com/solutions/valid-number/ 和http://www.cnblogs.com/yuzhangcmu/p/4060348.html的答案妙极啊。

    我抄在这里~背诵一遍。他们的思路是:

    首先我们看,能够出现的符号有:'e', 'E', '.' , '+', '-', '0 ~ 9'。 所以如果出现了别的东西,直接return false

    再者,这些符号出现的顺序是有讲究的。

    对于‘e’ 和 ‘E’:e的前后都要有数字,不会一e为开头或结尾;不可能出现两个e。

    对于‘.' :不可能在e后面出现,不会有两个‘.’。

    对于‘+/-’:只能出现在最开头或者紧跟‘e’。

    所以我们从头到尾读取,用三个flag表示这些符号的出现状态,思路就很清楚了!看代码吧

     1 public boolean isNumber(String s) {
     2         // Write your code here
     3         if (s == null) {
     4             return false;
     5         }
     6         String newS = s.trim();
     7         boolean num = false;
     8         boolean exp = false;
     9         boolean dot = false;
    10         for (int i = 0; i < newS.length(); i++) {
    11             if (newS.charAt(i) == 'e' || newS.charAt(i) == 'E') {
    12                 if (!num || exp) {
    13                     return false;
    14                 }else{
    15                     exp = true;
    16                     num = false;
    17                 }
    18             }else if(newS.charAt(i) == '.') {
    19                 if (exp || dot) {
    20                     return false;
    21                 }else{
    22                     dot = true;
    23                 }
    24             }else if(newS.charAt(i) == '+' || newS.charAt(i) == '-') {
    25                 if (i != 0 && newS.charAt(i - 1) != 'e' && newS.charAt(i - 1) != 'E') {
    26                     return false;
    27                 }
    28             }else if(newS.charAt(i) >= '0' && newS.charAt(i) <= '9') {
    29                 num = true;
    30             }else{
    31                 return false;
    32             }
    33         }
    34         return num;
    35     }
  • 相关阅读:
    windows 安装 python _ flask
    open-falcon 前端代码在windows上运行
    windows下 安装python_ldap MySQL-python
    rocketmq集群、配置详解和常用命令
    docker仓库管理(9)
    docker镜像管理和dockerfile详解(8)
    docker学习路线图
    docker组件如何协作(7)
    docker核心组件(6)
    docker镜像下载加速(5)
  • 原文地址:https://www.cnblogs.com/gonuts/p/4543090.html
Copyright © 2011-2022 走看看