{
  "type": "code_options",
  "author": "csdn.net",
  "source": "solution.md",
  "exercise_id": "b281f22e97cd4c4080c79969146cc820",
  "keywords": "字符串",
  "title": "有效数字",
  "desc": [
    {
      "content": "\n<p><strong>有效数字</strong>（按顺序）可以分成以下几个部分：</p><ol>\t<li>一个 <strong>小数</strong> 或者 <strong>整数</strong></li>\t<li>（可选）一个 <code>'e'</code> 或 <code>'E'</code> ，后面跟着一个 <strong>整数</strong></li></ol><p><strong>小数</strong>（按顺序）可以分成以下几个部分：</p><ol>\t<li>（可选）一个符号字符（<code>'+'</code> 或 <code>'-'</code>）</li>\t<li>下述格式之一：\t<ol>\t\t<li>至少一位数字，后面跟着一个点 <code>'.'</code></li>\t\t<li>至少一位数字，后面跟着一个点 <code>'.'</code> ，后面再跟着至少一位数字</li>\t\t<li>一个点 <code>'.'</code> ，后面跟着至少一位数字</li>\t</ol>\t</li></ol><p><strong>整数</strong>（按顺序）可以分成以下几个部分：</p><ol>\t<li>（可选）一个符号字符（<code>'+'</code> 或 <code>'-'</code>）</li>\t<li>至少一位数字</li></ol><p>部分有效数字列举如下：</p><ul>\t<li><code>[\"2\", \"0089\", \"-0.1\", \"+3.14\", \"4.\", \"-.9\", \"2e10\", \"-90E3\", \"3e+7\", \"+6e-1\", \"53.5e93\", \"-123.456e789\"]</code></li></ul><p>部分无效数字列举如下：</p><ul>\t<li><code>[\"abc\", \"1a\", \"1e\", \"e3\", \"99e2.5\", \"--6\", \"-+3\", \"95a54e53\"]</code></li></ul><p>给你一个字符串 <code>s</code> ，如果 <code>s</code> 是一个 <strong>有效数字</strong> ，请返回 <code>true</code> 。</p><p> </p><p><strong>示例 1：</strong></p><pre><strong>输入：</strong>s = \"0\"<strong><br />输出：</strong>true</pre><p><strong>示例 2：</strong></p><pre><strong>输入：</strong>s = \"e\"<strong><br />输出：</strong>false</pre><p><strong>示例 3：</strong></p><pre><strong>输入：</strong>s = \".\"<strong><br />输出：</strong>false</pre><p><strong>示例 4：</strong></p><pre><strong>输入：</strong>s = \".1\"<strong><br />输出：</strong>true</pre><p> </p><p><strong>提示：</strong></p><ul>\t<li><code>1 <= s.length <= 20</code></li>\t<li><code>s</code> 仅含英文字母（大写和小写），数字（<code>0-9</code>），加号 <code>'+'</code> ，减号 <code>'-'</code> ，或者点 <code>'.'</code> 。</li></ul>",
      "language": "markdown"
    }
  ],
  "answer": [
    {
      "content": "",
      "language": "java"
    }
  ],
  "prepared": [
    [
      {
        "content": "",
        "language": "java"
      }
    ],
    [
      {
        "content": "",
        "language": "java"
      }
    ],
    [
      {
        "content": "",
        "language": "java"
      }
    ]
  ],
  "template": {
    "content": "class Solution {\n\tchar[] chars;\n\tboolean point = false;\n\tboolean exponent = false;\n\tpublic boolean isNumber(String s) {\n\t\ts = s.trim();\n\t\tint length = s.length();\n\t\tif (length == 0) {\n\t\t\treturn false;\n\t\t}\n\t\tchars = s.toCharArray();\n\t\tString[] ss = s.split(\"e\");\n\t\tif (ss.length == 0) {\n\t\t\treturn false;\n\t\t}\n\t\tif (ss[0].length() == 0)\n\t\t\treturn false;\n\t\tif (ss[0].length() < length)\n\t\t\texponent = true;\n\t\tif (ss[0].length() == length - 1) {\n\t\t\treturn false;\n\t\t}\n\t\tString[] pre = ss[0].split(\"\\\\.\");\n\t\tif (pre.length == 0) {\n\t\t\treturn false;\n\t\t}\n\t\tif (pre[0].length() < ss[0].length())\n\t\t\tpoint = true;\n\t\tboolean result = pre(0, pre[0].length());\n\t\tresult = result && middle(pre[0].length() + 1, ss[0].length());\n\t\tif (exponent) {\n\t\t\tresult = result && is(ss[0].length() + 1, length);\n\t\t}\n\t\treturn result;\n\t}\n\tpublic boolean pre(int i, int length) {\n\t\tif (i >= length) {\n\t\t\treturn true;\n\t\t}\n\t\tif (chars[i] == '+' || chars[i] == '-') {\n\t\t\ti++;\n\t\t}\n\t\tif (i == length && !point) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (; i < length; i++) {\n\t\t\tif (chars[i] < '0' || chars[i] > '9') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\tpublic boolean middle(int i, int length) {\n\t\tif (i >= length && point) {\n\t\t\tif (chars[i - 2] >= '0' && chars[i - 2] <= '9') {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\tfor (; i < length; i++) {\n\t\t\tif (chars[i] < '0' || chars[i] > '9') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\tpublic boolean is(int i, int length) {\n\t\tif (i == 1) {\n\t\t\treturn false;\n\t\t}\n\t\tif (chars[i] == '+' || chars[i] == '-') {\n\t\t\ti++;\n\t\t}\n\t\tif (i == length) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (; i < length; i++) {\n\t\t\tif (chars[i] < '0' || chars[i] > '9') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n}",
    "language": "java"
  },
  "node_id": "dailycode-412b8eb337ab4e35a1dea7bda02d89f9",
  "license": "csdn.net",
  "created_at": 1637894159,
  "topic_link": "https://bbs.csdn.net/topics/600470924"
}