有效数字(表示数值的字符串),剑指offer,力扣

news2024/11/15 6:48:55

目录

题目地址:

我们直接看题解吧:

难度分析:

解题方法:

审题目+事例+提示:

解题思路:

代码实现:


题目地址:

LCR 138. 有效数字 - 力扣(LeetCode)

难度:中等

今天刷有效数字(表示数值的字符串),大家有兴趣可以点上看看题目要求,试着做一下

我们直接看题解吧:

难度分析:

这道题难倒是不算难,主要比较繁杂,因为要找出它的各种情况状态。

解题方法:

方法1、逐位判断(按顺序扫描字符串)

方法2、正则表达式(不太建议,面试用不上)

审题目+事例+提示:

1、本题即允许字符串首末两端有一些额外的空格

2、表示数值的字符串遵循共同的模式:

      A[.[B]][e|EC]或者.B[e|EC]。

    以上模式的含义是:

 A为数值的整数部分B为跟在小数点之后的小数部分C为跟在e或者E之后的指数部分

其中,A部分可以没有,比如小数.123代表0.123。但如果一个数没有整数部分,那么小数部分必须有

 具体来说:

   A和C(也就是整数部分和指数部分)都是可能以"+"、"-"开头或者没有符号的数字串,

  B是数字序列,但前面不能有符号。

解题思路:

1、设置三个boolean类型的变量,初始化为false

2、循环遍历字符串进行判断:

   ‘.出现的正确情况:只出现一次,且在e的前面

   ‘e出现的正确情况:只出现一次,且出现前有数字

   ‘+,-出现的正确情况:只能出现在开头和e的后一位

   符合条件的的字符重新置为true

3、返回对应的布尔值

代码实现:

class Solution {
    public boolean isNumber(String s) {
        if (s == null || s.length() == 0) return false; //首先判断字符串是否为空           
        s = s.trim();//去掉字符串两端的空格
        boolean numFlag = false;
        boolean dotFlag = false;  //设置三个变量,初始化false
        boolean eFlag = false;
        for (int i = 0; i < s.length(); i++) {
            //判定是否为数字,则标记numFlag
            if (s.charAt(i) >= '0' && s.charAt(i) <= '9') {
                numFlag = true;
            }
          //判定是否为.  需要没出现过.并且没出现过e
            else if (s.charAt(i) == '.' && !dotFlag && !eFlag) {
                dotFlag = true;
                
            } 
             //判定是否为e,需要没出现过e,并且出过数字了
            else if ((s.charAt(i) == 'e' || s.charAt(i) == 'E') && !eFlag && numFlag) {
                eFlag = true;
                numFlag = false;//为了避免123e这种情况,出现e之后就标志重置为false
             
            } 
           //判定为+-符号,只能出现在第一位或者紧接e后面
            else if ( (s.charAt(i) == '+' || s.charAt(i) == '-') {
                //+-出现在0位置或者e/E的后面第一个位置才是合法的
                if(i != 0 && str[i-1] != 'e' && str[i-1] != 'E'){
                    return false;
                }
            } 
           //其他情况,都是非法的
            else {
                return false;
            }
        }
        return numFlag;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1212233.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

利用Nextcloud搭建企业私有云盘系统

利用Nextcloud搭建企业私有云盘系统 1. 场景介绍2. 环境准备3. 安装NextCloud4. 系统功能验证 1. 场景介绍 Nextcloud是一款免费开源的私有云存储系统&#xff0c;采用PHPMySQL开发&#xff0c;提供了多个同步客户端支持多种设备访问&#xff0c;使用Nextcloud可以快速便捷地搭…

二、项目的运行环境

项目的运行环境 一、概述 项目所处的环境可能对项目的开展产生有利或不利的影响&#xff1a; 事业环境因素组织过程资产 二、事业环境因素 资源可用性&#xff1a;例如包括合同和采购制约因素、获得批准的供应商和分包商以及合作协议&#xff1b; 法律限制、政府或行业标准…

远程创建分支本地VScode看不到分支

在代码存放处右击&#xff0c;点击Git Bash Here 输入git fetch–从远程仓库中获取最新的分支代码和提交历史 就OK啦&#xff0c;现在分支可以正常查看了

游戏报错找不到xinput1_3.dll如何解决呢?分享5个解决方法对比

由于找不到xinput1_3.dll,无法继续执行代码的5个解决方法与丢失原因分享。 xinput1_3.dll是一个动态链接库文件&#xff0c;它包含了一些重要的函数和数据结构&#xff0c;用于支持游戏手柄等设备的操作。当这个文件丢失或损坏时&#xff0c;就会导致程序无法正常运行。 那么…

手机,蓝牙开发板,TTL/USB模块,电脑四者之间的通讯

一,意图 通过手机蓝牙连接WeMosD1R32开发板,开发板又通过TTL转USB与电脑连接.手机通过蓝牙控制开发板上的LED灯的开,关,闪等动作,在电脑上打开串口监视工具观察其状态.也可以通过电脑上的串口监视工具来控制开发板上LED灯的动作,而在手机蓝牙监测工具中显示灯的状态. 二,原料…

每天学习一点点之从 SonarQube Code Smell 看 Serializable

相关文章&#xff1a; 每天学习一点点之从 SonarQube Bug 看对线程中断异常的处理 昨天组内同学在进行代码合并的时候发现了一个 SonarQube 异常&#xff1a; 其实我之前也遇到过这个异常&#xff0c;但觉得“这种异常很无聊”&#xff0c;毕竟让 Spring Bean 去序列化&…

d3dcompiler_43.dll丢失了怎么办,详细解答和d3dcompiler_43.dll修复方法

以下将为您提供几种处理d3dcompiler_43.dll文件丢失的解决措施&#xff0c;这些方法实用有效&#xff0c;可以帮助我们恢复计算机运行。 一.d3dcompiler_43.dll是什么 在我们开始探讨如何修复d3dcompiler_43.dll文件丢失的问题之前&#xff0c;首先需要了解这个文件的作用。该…

如何选择正确的SSL证书?

SSL证书已经成为网站安全管理的重要部分&#xff0c;但是市场上SSL证书种类繁多&#xff0c;很多新手在初次购买时都会感到困惑。下面我们就一起来看看如何快速地选择正确的SSL证书。 第一步&#xff1a;明确SSL证书的主要分类 SSL证书主要有三种类型&#xff1a;单域名证书、…

2023selenium自动化(基础篇)

哈喽大家好&#xff0c;我是静姐&#xff0c;今天来给大家介绍在Python中使用selenium进行自动化操作 定义 Selenium是一个用于Web应用程序测试的自动化测试工具。使用Selenium可以驱动浏览器执行特定的动作,如点击、下拉等操作,还可以获取页面信息,断言页面是否如预期。在工作…

Oracle如何快速删除表中重复的数据

方法一&#xff1a; 在Oracle中&#xff0c;你可以使用DELETE语句结合ROWID和子查询来删除重复的记录。以下是一个示例&#xff1a; DELETE FROM your_table WHERE ROWID NOT IN (SELECT MAX(ROWID)FROM your_tableGROUP BY column1, column2, ... -- 列出用于判断重复的列 )…

【动态规划】买卖股票的最佳时期含冷冻期

文章目录 一、买卖股票的最佳时期含冷冻期动态规划五部曲 一、买卖股票的最佳时期含冷冻期 题目: 买卖股票的最佳时期含冷冻期 动态规划五部曲 1.确定dp的含义 由题意可知&#xff0c;这里有三种状态 1.买入状态&#xff1a;dp[i][0]:表示第i天处于买入状态时的最大利润为dp[…

C# Socket通信从入门到精通(9)——如何设置本机Ip地址

前言&#xff1a; 我们开发好Socket通信程序以后&#xff0c;上机调试的时候&#xff0c;首先要做的就是先设置好电脑的IP&#xff0c;这样才能实现不同的电脑之间的通信&#xff0c;并且电脑1的ip地址和电脑2的Ip地址要同处于一个网段&#xff0c;比如电脑1的Ip地址为192.168…

“程序员们的奔溃瞬间”——分享你最令你哭笑不得的程序员经历

文章目录 每日一句正能量前言编程趣事后记 每日一句正能量 每件事最后都会是好事。如果不是好事&#xff0c;说明还没到最后。 前言 作为程序员&#xff0c;我们时常会遇到各种奇怪的错误和挑战&#xff0c;有时候我们会崩溃&#xff0c;但更多的时候&#xff0c;我们会从中学…

蚂蚁集团首次披露数字科技业务海外发展数据 营收规模同比增长300%

蚂蚁集团资深副总裁、数字科技事业群总裁蒋国飞15日在新加坡金融科技节期间表示&#xff0c;过去一年&#xff0c;蚂蚁数科通过科技产品带来的海外营收规模增长了 300%&#xff0c;其中尤以菲律宾、马来西亚、印度尼西亚等新兴市场国家为主。这是蚂蚁集团首次披露数字科技业务板…

WorkPlus私有化部署的即时通讯软件,企业内部沟通协作的利器

随着企业的成长和信息科技的进步&#xff0c;团队协作变得越来越关键。为了更好地促进团队之间的信息共享和沟通&#xff0c;企业内部对聊天软件的需求也在不断增加。 WorkPlus是一个支持海量用户和高并发的私有化部署即时通讯能力&#xff0c;支持纯内网&#xff0c;内外网混…

2023.11.15使用bootstrap做一个简洁的注册页面

2023.11.15使用bootstrap做一个简洁的注册页面 设置密码必须大于等于6位&#xff0c;并且包含大写字母、小写字母、特殊字符或者数字中的三种。 关注&#xff1a;type"button"和type"submit"之间的区别&#xff1a; type"button"用于普通按钮&…

工作中积累的对K8s的就绪和存活探针的一些认识

首先&#xff0c;我的项目是基于 Spring Boot 2.3.5 的&#xff0c;并依赖 spring-boot-starter-actuator 提供的 endpoints 来实现就绪和存活探针&#xff0c;POM 文件如下图&#xff1a; 下面&#xff0c;再让我们来看下与该项目对应的Deployment的YAML文件&#xff0c;如下…

Multisim数电仿真实验——SOS循环序列信号发生器

目录 一、前言二、设计思路2.1序列信号的实现2.2SOS信号的循环再现 三、最终电路图 一、前言 SOS电路是一种简单而重要的电子电路&#xff0c;用于产生和传输紧急信号。我们将介绍SOS电路的连接思路&#xff0c;包括所需的组件选择以及信号的连接方式。 二、设计思路 2.1序列…

Android 12 客制化修改初探-Launcher/Settings/Bootanimation

Android 12 使用 Material You 打造的全新系统界面&#xff0c;富有表现力、活力和个性。使用重新设计的微件、AppSearch、游戏模式和新的编解码器扩展您的应用。支持隐私信息中心和大致位置等新的保护功能。使用富媒体内容插入功能、更简便的模糊处理功能、经过改进的原生调试…

SDL2 播放音频数据(PCM)

1.简介 这里以常用的视频原始数据PCM数据为例&#xff0c;展示音频的播放。 SDL播放音频的流程如下&#xff1a; 初始化音频子系统&#xff1a;SDL_Init()。设置音频参数&#xff1a;SDL_AudioSpec。设置回调函数&#xff1a;SDL_AudioCallback。打开音频设备&#xff1a;SD…