剑指 Offer 20. 表示数值的字符串

2023-11-09

表示数值的字符串

思路

多边界的问题,
在这里插入图片描述

求解

package swordPointingToTheOffer;

public class Twenty {
    public static boolean isNumber(String s) {
        //空格,小数点,E/e, 普通字符,  + -
        if(s ==null||s.length()<=0){
            return false;
        }
        //去掉首尾的空格,并且转换为字符数组
        char[] res = s.trim().toCharArray();
        if(res.length<0){
            return false;
        }

        int n =res.length;

        if(n==1&&res[0]=='.'){
            return false;
        }else if(n==0){
            return false;
        }


        boolean is_dot = false;
        boolean is_e_or_E = false;
        boolean is_num = false;
        //逐一检查是否合格
        for (int i =0;i<n;i++){
            if(res[i]>='0'&&res[i]<='9'){
                is_num = true;
            }else if(res[i]=='.'){
                //小数点的前面不能有重复的小数点,也不能出现e/E
                if(is_dot||is_e_or_E){
                    return false;
                }
                is_dot = true;
            }else if(res[i]=='e'||res[i]=='E'){
                //  e/E 的前面要有一个数字,且不能再重复出现eE
                if(is_e_or_E||!is_num){
                    return false;
                }
                is_e_or_E = true;
                is_num = false; //重置  (5e2)
            }else if(res[i]=='-'||res[i]=='+'){
                //-1E-16
                if(i!=0 && res[i-1]!='e'&&res[i-1]!='E'){
                    return false;
                }
            }else {
                //其他的字符,直接出错
                return false;
            }
        }
        return is_num;
    }

    public static void main(String[] args) {
//        System.out.println(isNumber("-1E-16"));
//        System.out.println(isNumber("1a3.14"));
        String arr[]={"12e", "1a3.14", "1.2.3", "+-5", "12e+5.4"};
        System.out.println(arr[0]);
        System.out.println(isNumber(arr[0]));

    }
}

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

剑指 Offer 20. 表示数值的字符串 的相关文章

随机推荐

  • 【知识学习】马氏距离 Mahalanobis Distance

    目录 1 协方差的意义 2 马氏距离 2 1 概述 2 2 公式 2 3 实际意义 2 4 局限性 2 4 1 协方差矩阵必须满秩 不平衡数据少数类一般都不是 2 4 2 不能处理非线性流形 manifold 的问题 线性流形和非线性流形
  • JSON.parseArray报错

    JSON parseArray报错 com alibaba fastjson JSONException syntax error expect actual error pos 1 fastjson version 1 2 47 解决方案
  • 在JavaScript中确认字符串结尾的两种方法

    In this article I ll explain how to solve freeCodeCamp s Confirm the Ending challenge This involves checking whether a s
  • 有趣的xss靶场

    最近发现一个在线xss靶场 挺有趣的 靶场只有12关卡 上面还写了服务区原代码 对于想入门xss的小伙伴可以试着玩一玩 结果只要实现弹窗结果为1即可 链接在这里 https xss haozi me 0x00 server code fun
  • C++基础知识 - 异常处理机制

    异常处理的基本思想 C 的异常处理机制使得异常的引发和异常的处理不必在同一个函数中 这样底层的函数可以着重解决具体问题 而不必过多的考虑异常的处理 上层调用者可以再适当的位置设计对不同类型异常的处理 异常是专门针对抽象编程中的一系列错误进行
  • 代码审查最佳实践

    代码审查是一种出色的软件工具 您绝对应该使用它来提高代码质量 但是像其他任何工具一样 有时可能会误用它 这就是为什么我提出了一些最佳做法来指导您查看同行代码的原因 代码审查不是测试 代码审查是开发人员对开发人员的业务 它不涉及任何测试 代码
  • 目标检测算法分类

    目标检测算法分类 1 两步走的目标检测 先找出候选的一些区域 再对区域进行调整分类 代表 R CNN SPP net Fast R CNN Faster R CNN 2 端到端的目标检测 采用一个网络一步到位 输入图片 输出有哪些物体 物体
  • Mysql之流程控制语句case

    CASE函数 情况1 实现等值判断 类似于switch语句 语法 CASE 要判断的字段或表达式 WHEN 常量1 THEN 要显示的值1或语句1 WHEN 常量2 THEN 要显示的值2或语句2 ELSE 要显示的值n或语句n END 案
  • 将项目部署到服务器

    首先确定各个需要被部署的应用所对应的ip 数据库类型 数据库名 中间件 应用名 版本及端口号 重要提示 主要分为六大步骤 1 部署数据库 kingbase8 导出导入数据库dmp文件 2 安装redis 系统后端需要用到redis 3 部署
  • cocos creator主程入门教程(十)—— A*寻路

    这一篇介绍A 寻路算法 在RPG SLG 模拟经营类游戏 有需要给角色寻路的需求 一般寻路我们采用A 寻路算法 A 寻路算法是一种广度优先启发性算法 先说说什么叫广度优先 搜索分为广度优先和深度优先 主要体现在对节点的展开上 深度优先一直往
  • 关于 html 或 jsp 页面调用js文件里的函数报错onclick is not defined处理方法

    错误 zygh is not defined at HTMLAnchorElement onclick 原因 function 方法写在 function 中 function 相当于匿名方法 里面是私有变量 所以页面找不到这个 funct
  • OpenCV13(摄像机显示和图像捕获 + 控制台下获取时间)

    1 摄像机测试程序 图像捕获 VS2012 OpenCV2 4 9 基于OpenCV的单个摄像机显示程序 控制台 按 c 键捕获图像 按照时间格式命名 默认C盘 Alex 2016 9 14 include stdafx h include
  • 【Python报错】在定义class时,出现AttributeError: ‘tuple‘ object has no attribute ‘describe_user‘

    请求各位大神的帮助 我在做class这一章的练习时 遇到报错 不知道如何修改 题目是要输出用户信息以及问候语 出现报错后 我有三个疑惑点 1 tuple指的是程序中的哪一部分 2 为什么会出现识别为tuple的情况 3 如何纠正这个错误 求
  • 关于使用STM32CubeMx配置串口出现的一些问题

    一 使用CubeMX配置好串口中断的工程 打开工程添加相关代码后串口没有数据输出或者看不见数据但串口助手的RX会一直增加的问题 参考 这里 大概意思就是时钟的原因 需要把stm32f4xx hal conf h文件中的时钟改一下 将25MH
  • Write Amplification Analysis in Flash-Based Solid State Drives

    Write Amplification Analysis in Flash Based Solid State Drives 摘要 第一部分 第二部分 第三部分 此文发表于2009年 摘要 写入放大是限制基于NAND闪存的存储设备中的随机写
  • 华为OD机试真题 Java 实现【水仙花数】【2022Q4 100分】

    一 题目描述 所谓水仙花数 是指一个n位的正整数 其各位数字的n次方和等于该数本身 例如153是水仙花数 153是一个3位数 并且153 1 3 5 3 3 3 二 输入描述 第一行输入一个整数n 表示一个n位的正整数 n在3到7之间 包含
  • 深入剖析C语言结构体内存对齐:轻松计算结构体大小的技巧

    本篇博客会讲解C语言结构体的内存对齐 并且给出一种快速计算结构体大小的方式 主要讲解下面几点 结构体的内存对齐是什么 如何快速计算结构体的大小 如何利用内存对齐节省结构体占用的内存空间 为什么结构体要内存对齐 如何修改默认对齐数 结构体内存
  • 国际版腾讯云阿里云免费开户:全站加快 DCDN 重磅发布!打造新一代加快引擎

    腾讯云全站加快 DCDN 重磅发布 打造新一代加快引擎 在数字化转型革新逐渐深化的当下 安全高效成为企业上云 全球化布置的要害需求 跟着运用场景复杂度不断提高 事务需求差异化开展 为了给企业供给更完善的安全加快服务 阿里云对全站加快DCDN
  • ubuntu 16.04安装提示end Kernel panic

    问题描述 ubuntu 最新版本VM虚拟机安装时出现错误end kernel panic not syncing corrupted stack end detected inside scheduler的解决方式 解决办法 选择自定义安装
  • 剑指 Offer 20. 表示数值的字符串

    表示数值的字符串 思路 多边界的问题 求解 package swordPointingToTheOffer public class Twenty public static boolean isNumber String s 空格 小数点