• LeetCode【65. 有效数字】


    没有完美的傀儡,没有完美的人类,却有绝美的离逝。

    有效数字(按顺序)可以分成以下几个部分:

    1. 一个 小数 或者 整数
    2. (可选)一个 'e' 或 'E' ,后面跟着一个 整数

    小数(按顺序)可以分成以下几个部分:

    1. (可选)一个符号字符('+' 或 '-'
    2. 下述格式之一:
      1. 至少一位数字,后面跟着一个点 '.'
      2. 至少一位数字,后面跟着一个点 '.' ,后面再跟着至少一位数字
      3. 一个点 '.' ,后面跟着至少一位数字

    整数(按顺序)可以分成以下几个部分:

    1. (可选)一个符号字符('+' 或 '-'
    2. 至少一位数字

    部分有效数字列举如下:["2", "0089", "-0.1", "+3.14", "4.", "-.9", "2e10", "-90E3", "3e+7", "+6e-1", "53.5e93", "-123.456e789"]

    部分无效数字列举如下:["abc", "1a", "1e", "e3", "99e2.5", "--6", "-+3", "95a54e53"]

    给你一个字符串 s ,如果 s 是一个 有效数字 ,请返回 true 。

    示例 1:

    输入:s = "0"
    输出:true
    

    示例 2:

    输入:s = "e"
    输出:false
    

    示例 3:

    输入:s = "."
    输出:false
    

    提示:

    • 1 <= s.length <= 20
    • s 仅含英文字母(大写和小写),数字(0-9),加号 '+' ,减号 '-' ,或者点 '.' 。

    通过次数67.8K提交次数245.5K通过率27.6%

    1. public boolean isNumber(String s) {
    2. if (s == null || s.length() == 0) {
    3. return false;
    4. }
    5. boolean seenDigit = false;
    6. boolean seenExponent = false;
    7. boolean seenDot = false;
    8. for (int i = 0; i < s.length(); i++) {
    9. char c = s.charAt(i);
    10. if (Character.isDigit(c)) {
    11. seenDigit = true;
    12. } else if (c == '+' || c == '-') {
    13. if (i > 0 && s.charAt(i - 1) != 'e' && s.charAt(i - 1) != 'E') {
    14. return false;
    15. }
    16. } else if (c == 'e' || c == 'E') {
    17. if (seenExponent || !seenDigit) {
    18. return false;
    19. }
    20. seenExponent = true;
    21. seenDigit = false; // Reset seenDigit for the exponent part
    22. } else if (c == '.') {
    23. if (seenDot || seenExponent) {
    24. return false;
    25. }
    26. seenDot = true;
    27. } else {
    28. return false; // Invalid character
    29. }
    30. }
    31. return seenDigit;
    32. }

     

  • 相关阅读:
    自己动手写数据库:并发管理器的实现,以及并发交易流程的分析
    excel中超级表和普通表的相互转换
    ArgoCD实践之基于配置清单创建Application
    接口测试-笔记
    一幅长文细学Redis(一)——NoSQL数据库简介以及Redis安装
    arm下安装pytorch
    1.3 统计学习方法的三要素
    【AAAI 2024】解锁深度表格学习(Deep Tabular Learning)的关键:算术特征交互
    从零开始 Spring Boot 16:枚举
    Springboot启动流程核心知识点(一):Spring自动装配原理
  • 原文地址:https://blog.csdn.net/s_sos0/article/details/133191120