【剑指offer系列】20-表示数值的字符串(关键字:之前出现过的属性,记为true)

本文主要是介绍【剑指offer系列】20-表示数值的字符串(关键字:之前出现过的属性,记为true),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目: 表示数值的字符串

请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。

思路:

0。任何一个数值,末尾一定是数字
1。是0-9么,是num=true
2。是".“逗号么,是的话,之前不能出现过逗号(1.2.3),且之前不能e|E(5e+3.2);
3。是e|E么,是的话,之前不能出现过e|E,且之前必须出现过num数字;
4。是”+“或者”-"号么,是的话,他们只能出现在i==0即第一个位置,或者出现在e|E 之后(5e+3),出现在别的位置都不可以
5。除了上述四种情况,都不行
return true(因为,for循环遍历完都满足)

public class Main20  {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String str = sc.next();boolean b  = new Main20().isInt(str.toCharArray());System.out.println(b);}private boolean isInt(char[] ch) {if (ch == null || ch.length == 0)return false;boolean num = false; //字符串中是否出现了整数boolean dot = false; //是否出现了逗号boolean e = false; //是否出现了e或者Eif (ch[ch.length-1] > '9' || ch[ch.length-1] < '0') return false;//0.末尾只要不是数字,就不可能是数值for (int i = 0; i < ch.length; i++) {if (ch[i] >= '0' && ch[i] <= '9'){num = true;//此时,记录下整数已出现过}else if (".".equals(String.valueOf(ch[i]))){//1.逗号之前不能出现过逗号“.”和e|Eif (dot || e)return false;dot = true;//此时,记录下,","号已出现过}else if ("e".equals(String.valueOf(ch[i]).toLowerCase())){//2.e|E之前不能有e|E,且必须有数字if (e || !num)return false;e = true;//记录下,e或者E已出现过了}else if ("-".equals(String.valueOf(ch[i])) || "+".equals(String.valueOf(ch[i]))){//3.+-必须在first或者e|E之后(5e+3)if (i != 0 && ! ( "e".equals(String.valueOf(ch[i-1]).toLowerCase()))){//二者均不满足则falsereturn false;}}else {//4.其他符号abc$`/等return false;}}// 都满足return true;}
}

这篇关于【剑指offer系列】20-表示数值的字符串(关键字:之前出现过的属性,记为true)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/900846

相关文章

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

Java中的抽象类与abstract 关键字使用详解

《Java中的抽象类与abstract关键字使用详解》:本文主要介绍Java中的抽象类与abstract关键字使用详解,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、抽象类的概念二、使用 abstract2.1 修饰类 => 抽象类2.2 修饰方法 => 抽象方法,没有

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

Java使用正则提取字符串中的内容的详细步骤

《Java使用正则提取字符串中的内容的详细步骤》:本文主要介绍Java中使用正则表达式提取字符串内容的方法,通过Pattern和Matcher类实现,涵盖编译正则、查找匹配、分组捕获、数字与邮箱提... 目录1. 基础流程2. 关键方法说明3. 常见场景示例场景1:提取所有数字场景2:提取邮箱地址4. 高级

Python批量替换多个Word文档的多个关键字的方法

《Python批量替换多个Word文档的多个关键字的方法》有时,我们手头上有多个Excel或者Word文件,但是领导突然要求对某几个术语进行批量的修改,你是不是有要崩溃的感觉,所以本文给大家介绍了Py... 目录工具准备先梳理一下思路神奇代码来啦!代码详解激动人心的测试结语嘿,各位小伙伴们,大家好!有没有想

Python 字符串裁切与提取全面且实用的解决方案

《Python字符串裁切与提取全面且实用的解决方案》本文梳理了Python字符串处理方法,涵盖基础切片、split/partition分割、正则匹配及结构化数据解析(如BeautifulSoup、j... 目录python 字符串裁切与提取的完整指南 基础切片方法1. 使用切片操作符[start:end]2

Python如何调用另一个类的方法和属性

《Python如何调用另一个类的方法和属性》在Python面向对象编程中,类与类之间的交互是非常常见的场景,本文将详细介绍在Python中一个类如何调用另一个类的方法和属性,大家可以根据需要进行选择... 目录一、前言二、基本调用方式通过实例化调用通过类继承调用三、高级调用方式通过组合方式调用通过类方法/静

MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)

《MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)》本文给大家介绍MyBatis的xml中字符串类型判空与非字符串类型判空处理方式,本文给大家介绍的非常详细,对大家的学习或... 目录完整 Hutool 写法版本对比优化为什么status变成Long?为什么 price 没事?怎

Java中的volatile关键字多方面解析

《Java中的volatile关键字多方面解析》volatile用于保证多线程变量可见性与禁止重排序,适用于状态标志、单例模式等场景,但不保证原子性,相较synchronized更轻量,但需谨慎使用以... 目录1. volatile的作用1.1 保证可见性1.2 禁止指令重排序2. volatile的使用

精选20个好玩又实用的的Python实战项目(有图文代码)

《精选20个好玩又实用的的Python实战项目(有图文代码)》文章介绍了20个实用Python项目,涵盖游戏开发、工具应用、图像处理、机器学习等,使用Tkinter、PIL、OpenCV、Kivy等库... 目录① 猜字游戏② 闹钟③ 骰子模拟器④ 二维码⑤ 语言检测⑥ 加密和解密⑦ URL缩短⑧ 音乐播放