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

目录

题目地址:

我们直接看题解吧:

难度分析:

解题方法:

审题目+事例+提示:

解题思路:

代码实现:


题目地址:

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;  //设置三个变量,初始化falseboolean eFlag = false;for (int i = 0; i < s.length(); i++) {//判定是否为数字,则标记numFlagif (s.charAt(i) >= '0' && s.charAt(i) <= '9') {numFlag = true;}//判定是否为.  需要没出现过.并且没出现过eelse 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.hqwc.cn/news/178853.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 分库分表与 TiDB(平凯数据库),如何选择?

随着互联网行业的飞速发展&#xff0c;数据量不断增长&#xff0c;传统的关系型数据库已经无法满足大规模数据处理的需求。为了解决这一问题&#xff0c;分库分表和分布式数据库应运而生。本文将对比分析 MySQL 分库分表和 TiDB 这两种解决方案&#xff0c;帮助大家更好地选择适…

【VSCode】Visual Studio Code 配置简体中文环境教程

介绍 Visual Studio Code&#xff08;简称 VS Code&#xff09;是一款轻量级的代码编辑器&#xff0c;它支持多种编程语言&#xff0c;并且具有丰富的功能和插件扩展。如果你更喜欢使用简体中文界面&#xff0c;那么本教程将向你展示如何在 VS Code 中配置简体中文环境。 步骤…

Redhat8.3上部署Lustre文件系统

Lustre文件系统 Lustre架构是用于集群的存储架构。Lustre架构的核心组件是Lustre文件系统&#xff0c;它在Linux操作系统上得到支持&#xff0c;并提供了一个符合POSIX *标准的UNIX文件系统接口。 Lustre存储架构用于许多不同类型的集群。它以支持世界上许多最大的拥有数万个…

ubuntu22.04下hadoop3.3.6+hbase2.5.6+phoenix5.1.3开发环境搭建

一、涉及软件包资源清单 1、java 这里使用的是openjdk 2、hadoop-3.3.6.tar.gz 3、hbase-2.5.6-hadoop3-bin.tar.gz 4、phoenix-hbase-2.5-5.13-bin.tar.gz 5、apache-zookeeper-3.8.3-bin.tar.gz 6、openssl-3.0.12.tar.gz 二、安装 1、操作系统环境准备 换源 sudo vim /et…

uniapp基础学习笔记01

文章目录 本博客根据黑马教程学习uniapp一、技术架构二、创建项目2.1 Hbuilder创建2.2 插件安装2.3 微信开发者工具配置与运行2.3.1 简单修改基础页面 2.4 pages.json和tabBar2.4.1 pages.json与tabBar配置2.4.2 案例 三、uniapp与原生开发的区别 本博客根据黑马教程学习uniapp…

推出链上美债产品的 ProsperEx:RWA 衍生品赛道的早期玩家

美债是目前 RWA 市场中进展较快的领域之一&#xff0c;目前该市场的规模&#xff08;TVL&#xff09;已经达到了 $770 M&#xff0c;并且美债 RWA 市场目前正在以每月大约 10% 的增长速度扩大规模。 图源&#xff1a;app.rwa.xyz/treasuries 在该领域&#xff0c;固定收益类美债…

继承、多态

复习 需求&#xff1a; 编写一个抽象类&#xff1a;职员Employee,其中定义showSalary(int s)抽象方法&#xff1b;编写Employee的子类&#xff0c;分别是销售员Sales和经理Manager,分别在子类中实现对父类抽象方法的重写&#xff0c;并编写测试类Test查看输出结果 package cn.…

VulnHub Prime_Series_Level-1

一、信息收集 1.nmap扫描 ┌──(root&#x1f480;kali)-[~/桌面] └─# arp-scan -l┌──(root&#x1f480;kali)-[~/桌面] └─# nmap -sS -A -p- 192.168.103.202发现开放了22和80端口 2.web页面 打开80端口的web页面&#xff0c;是一张静态的图片&#xff0c;没什么价…

Mybatis-Plus条件构造器QueryWrapper

Mybatis-Plus条件构造器QueryWrapper 1、条件构造器关系介绍 介绍 &#xff1a; 上图绿色框为抽象类 蓝色框为正常类&#xff0c;可创建对象 黄色箭头指向为父子类关系&#xff0c;箭头指向为父类 wapper介绍 &#xff1a; Wrapper &#xff1a; 条件构造抽象类&#xff0…

ctfshow 文件上传 151-161

文件上传也好久没做了。。 手很生了 151 前端绕过 只能上传png文件 使用bp抓包&#xff0c;修改文件名后缀为php 上传成功&#xff0c;发现文件上传路径 使用蚁剑连接 找到flag 152 152 后端校验 跟上一关一样 表示后面即使执行错误&#xff0c;也不报错 抓包修改文件…

【C++面向对象】10. 多态

文章目录 【 前言 】【 虚函数 】【 纯虚函数 】 【 前言 】 多态按字面的意思就是多种形态。当 类之间存在层次结构&#xff0c;并且类之间是通过继承关联时 &#xff0c;就会用到多态。 C 多态意味着调用成员函数时&#xff0c;会根据调用函数的对象的类型来执行不同的函数…

nodejs+express重定向

前言&#xff1a; 本篇代码中需要安装的依赖包包括&#xff1a;request、express 1.常用重定向方法 nodejs中的重定向可以使用.redirect()方法&#xff0c;该方法中可以传两个参数&#xff1a;code和path&#xff0c;code指重定向时&#xff0c;当前访问的这个接口的返回码3…