Java - 表达数值的字符串(剑指offer)

2023-11-10

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

public class charFlow {

	//根据数值的特点将字符串进行分类判断

	public boolean isNumeric(char[] str){

		if(str==null || str.length==0) return false;
		boolean hasE = false, decimal = false, sign = false;

		for(int i=0;i<str.length;i++){
			char ch = str[i];
			if(ch=='e'|| ch='E'){
				if(hasE) return false;
				if(i==str.length-1) return false;
				hasE=true;
			}
			else if(ch=='+'||ch=='-'){
				if(sign && str[i-1]!='e' && str[i-1]!='E') return false;
				if(!sign && i>0 && str[i-1]!='e' && str[i-1]!='E') return false;
				sign = true;
			}
			else if(ch=='.'){
				if(hasE || decimal) return false;
				decimal = true;
			}
			else if(ch<'0' || ch>'9') return false;
		}
		return true;
	}

	//根据数值的特点将字符串进行分类判断

	public boolean isNumeric2(char[] str){
		if(str == null || str.length==0) return false;
		int count = 0, index=-1, count1=0;
		for(int i=0;i<str.length;i++)
		{
			if(str[i]=='e'||str[i]=='E')
			{
				count1++;index=i;
				if(count>1 || i==str.length-1) return false;
			}
			else if(str[i]=='.')
			{
				count++;
				if(count>1 || i==0 || i==str.length-1||(index>-1&&i>index)) 
					return false;
			}
			else if(str[i]=='+'||str[i]=='-')
			{
				if(i!=0)
				{
					if((str[i-1]!='e'&&str[i-1]!='E')||i==str.length-1) return false;
					else if (str[i+1]<'0'||str[i+1]>'9') return false;
				}
			}else if(str[i]<'0'||str[i]>'9') return false;
			
		}
		return true;
	}

	//采用正则表达式判断字符串是否可表示数值
	//"\\" refers to escape character(ESC)

	public boolean isNumeric3(char[] str){

		String string = String.valueOf(str);
		return string.matches("[\\+\\-]?[0-9]*(\\.[0-9]*)?([eE][\\+\\-]?[0-9]+)?");
	}

	//采用异常捕获机制判断字符串是否可转换为double类型

	public boolean isNumeric4(char[] str){
		try{
			Double.valueOf(new String(str));
			return true;
		}catch(Exception e){
			return false;
		}
	}
	//
	
}

 

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

Java - 表达数值的字符串(剑指offer) 的相关文章

  • 正则表达式大全,一篇前后端都可用

    正是掌握了这些正则表达式 冰河平均每天比别人少写200行代码 极大的提高了研发效率 熟练的掌握正则表达式 能够帮助程序员以最快的速度写出最优雅的代码 冰河在多年的编程工作中 对使用过的正则表达式进行了梳理和总结 这些正则表达式能够帮助你节省
  • Java正则表达式详解

    1 1 正则表达式的概念以及演示 正则表达式可以用一些规定的字符来制定规则 并用来校验数据格式的合法性 正则表达式就是用来验证各种字符串的规则 它内部描述了一些规则 我们可以验证用户输入的字符串是否匹配这个规则 正则表达式是一种强大的校验机
  • re模块----你也可以玩得很溜正则表达式

    目录 re模块 compile pattern flags 0 flag匹配模式 match pattern string flags 0 search pattern string flags 0 findall pattern stri
  • 正则实现去除字符串前后空格

    前言 正则去掉字符串前后空格 1 去除左空格 str1是处理后的 let str1 str replace s g 2 去除右空格 str2是处理后的 let str2 str replace s g 3 去除左右空格 let str3 s
  • 知识点——初识java中File类

    1 1 什么是File类 SUN公司提供给开发者操作文件和文件夹的一个类对象 Java中万物皆对象 计算机中万物皆文件 获取File类有三种方式 Constructor 构造方法 File String pathName 根据对应的文件路径
  • 知道这20个正则表达式,能让你少写1,000行代码

    正则表达式 一个十分古老而又强大的文本处理工具 仅仅用一段非常简短的表达式语句 便能够快速实现一个非常复杂的业务逻辑 熟练地掌握正则表达式的话 能够使你的开发效率得到极大的提升 正则表达式经常被用于字段或任意字符串的校验 如下面这段校验基本
  • list转json字符串

    使用Gson把list转成json字符串 com google gson Gson GetMapping valueTest public String valueTest List
  • 业务实战中如何利用MySQL函数来解决

    随着我们业务越来越复杂的情况下 完全基于java后台来解决首先是很麻烦 而且性能带来降低 代码的可读性下降 这个时候就需要一些MySQL的函数来解决了 这篇文章对于常见的MySQL函数不予介绍 concat函数 使用方法 CONCAT st
  • js 字符串与二维数组间的转化

    1 字符串转二维数组 var a 1 2 3 4 5 a b c d e y1 y2 y3 y4 y5 var str eval a alert str 0 3 结果 4 2 二维数组转字符串 var b 1 2 a b function
  • 【Linux命令—shell】正则表达式

    正则表达式 regular expression 描述一个字符集合的表达方式 模糊匹配 目录 1 基本正则 2 扩展正则 3 兼容的正则 perl 4 综合案例练习 1 基本正则 演示如下 2 扩展正则 注意 grep不支持扩展正则 如果需
  • Java基础之String类型详解

    目录 1 简介 2 字符串的比较 3 String的实例化方式 1 直接赋值方式 2 构造方法实例化 4 String对象 常量 池 5 字符串修改 6 String类常用方法 1 字符串查找 2 字符串替换 3 字符串拆分 4 字符串截取
  • js正则表达式多行匹配

    在js匹配网页内容时 往往需要匹配一段代码比如 div div 中间可能有很多行 这个时候一般 的匹配规则是匹配不出来的 如下介绍一个折中的方法 var content 这里是内容 var re p class s S p gt g var
  • 小饼干问题 find寻找字符串 substr截取字符串

    所有人的回复都由大写字母 小写字母与 组成 占一行 MJJ认为只要其中包含了连续的10个小写字母 zailaiyihe 就意味着这个人想要再来一盒 题目描述 现在MJJ准备给每一个想要 再来一盒 的人买一盒小饼干 他想知道总共需要买几盒小饼
  • Python基础知识(四):一文看懂列表、元组和字符串操作

    序列 序列是具有索引和切片能力的集合 列表 元组和字符串具有通过索引访问某个具体的值 或通过切片返回一段切片的能力 列表 元组 字符串都属于序列 1 列表 列表 List 是Python中非常重要的内置数据类型 列表由一系列元素组成 所有的
  • 超详细!Jmeter性能测试(二)

    Jmeter 性能测试 二 关联 正则表达式提取器和JSON Extractor提取器 接入上篇博文继续 上篇地址 https blog csdn net weixin 44954642 article details 103054387
  • (Java)leetcode-76 Minimum Window Substring(最小覆盖子串)

    题目描述 给你一个字符串 s 一个字符串 t 返回 s 中涵盖 t 所有字符的最小子串 如果 s 中不存在涵盖 t 所有字符的子串 则返回空字符串 注意 如果 s 中存在这样的子串 我们保证它是唯一的答案 示例 1 输入 s ADOBECO
  • qt 开发遇到的坑

    1 QString的toString 和toWString 引起的win32位release 下std string的析构崩溃 代码 QString qs std string str qs toStdString const wchar
  • Python编程中的for循环语句学习教程

    本文来源于公众号 csdn2299 喜欢可以关注公众号 程序员学府 这篇文章主要介绍了Python编程中的for循环语句学习教程 是Python入门学习中的基础知识 需要的朋友可以参考下 Python for循环可以遍历任何序列的项目 如一
  • 正则校验手机号

    正则表达式可以用来校验手机号码的合法性 如果你想使用正则表达式来校验中国大陆的手机号码 可以使用如下的正则表达式 1 3 9 d 9 这个正则表达式可以匹配所有 13 到 19 开头的 11 位数字 即所有中国大陆的手机号码 例如 如果你想
  • C语言实现随机发纸牌

    C语言实现随机发纸牌 为避免重复发牌 设二维数组sign 4 13 记载是否发过纸牌 其中行下表表示花色 列下标表示点数 设字符串指针数组card n 存储随机发的n张纸牌 例如card 0 梅花2 按照以下方法以此发出每一张牌 首先产生一

随机推荐

  • ZooKeeper 未授权访问漏洞利用

    点击 仙网攻城狮 关注我们哦 不当想研发的渗透人不是好运维 让我们每天进步一点点 简介 ZooKeeper是一个分布式的 开放源码的分布式应用程序协调服务 它是一个为分布式应用提供一致性服务的软件 提供的功能包括 配置维护 域名服务 分布式
  • windows10自带屏保设置

    windows10系列文章目录 文章目录 windows10系列文章目录 前言 一 操作步骤 1 打开个性化设置 2 锁屏界面 3 设置等待时间 360健康助手 1 添加健康助手 前言 windows10自带屏保默认设置是 5分钟没有人为对
  • MyBatis框架详解

    MyBatis属于orm框架 MyBatis 是支持定制化 SQL 存储过程以及高级映射的优秀的持久层框架 其主要就完成2件事情 封装JDBC操作 利用反射打通Java类与SQL语句之间的相互转换 MyBatis使用简单的XML或注解用于配
  • 初步了解python与爬虫

    初步了解 python与爬虫 1 什么是python 答 python是一种动态的 面向对象的计算机程序语言 像C java C 一样 它的特点就是语法简洁 具有丰富的 功能强大的第三方库函数 2 什么是爬虫 答 爬虫即Web Spider
  • 移动通信原理B-------例题解答2

    移动通信原理B例题解答2 移动通信原理B 例题解答2 一 题目 若一发射机发射载频为1850Mhz 一辆汽车以每小时72Km h的速度运动 计算在以下情况下接收机的载波频率 1 汽车沿直线朝向发射机运动 2 汽车沿直线背向发射机运动 3 汽
  • linux服务器基础知识,linux基础知识1

    1 在chmod 命令中 v参数的作用是 A 详细说明组的变化 B 详细说明权限的变化 C 改变本目录及其所有子目录的文件的权限 D 在文件的权限确实改变时进行详细的说明 2 为了显示文件 test 的内容可以用命令 A cat test
  • jQuery 事件 - trigger() 方法

    实例
  • SCADA和三大工业控制系统PLC、DCS、FCS

    一 引言 工业控制系统 ICS 是一个通用术语 随着工业技术的快速发展 相继出现了集散控制系统和现场控制系统 涵盖多种类型的控制系统 包括监控和数据采集 SCADA 系统 分布式控制系统 DCS 和其他较小的控制系统配置 如经常在工业部门和
  • 剑指Offer-链表-面试题62:圆圈中最后剩下的数字

    面试题62 圆圈中最后剩下的数字 题目描述 每年六一儿童节 牛客都会准备一些小礼物去看望孤儿院的小朋友 今年亦是如此 HF作为牛客的资深元老 自然也准备了一些小游戏 其中 有个游戏是这样的 首先 让小朋友们围成一个大圈 然后 他随机指定一个
  • 基本操作:vscode-git使用和命令

    1 Git简介 GIt git 是一个开源的分布式版本控制系统 可以有效 高速的处理从很小到很大的项目版本管理 通俗的说 解决的问题是 正常开发 一个团队需要很多人来共同开发一个项目 那么就涉及到代码的合并 比如两个人 同时更改了一处代码
  • Python爬取拉勾网职位 - 分析学历与薪资关系及技能词云

    Python拉勾网职位爬取及数据分析可视化 文章目录 Python拉勾网职位爬取及数据分析可视化 1 工具准备 1 安装第三方库 2 安装及配置Chromedriver无头浏览器 3 谷歌浏览器xpath插件安装及配置 4 使用Pychar
  • 焊接机器人的坡口填充功能_《金属焊接》课后习题参考答案完整版

    金属焊接 课后习题 第1章绪论 1 1 什么是焊接 什么叫做焊接技术 储运11 1 01 丛欣欣 答 焊接 是指通过适当的手段 是两个分离的金属物体 同种金属或异种金属 产生原子 分子 间结合而连接一体的连接方法 焊接技术 焊接是一种重要的
  • HTML期末作业-网上书城网上书店

    HTML期末作业 网上书城网上书店 HTML css JavaScript 7个页面 部分源码
  • 史上最强,Jenkins插件实现多个Job并行后再触发Job详细,一篇贯通...

    目录 导读 前言 一 Python编程入门到精通 二 接口自动化项目实战 三 Web自动化项目实战 四 App自动化项目实战 五 一线大厂简历 六 测试开发DevOps体系 七 常用自动化测试工具 八 JMeter性能测试 九 总结 尾部小
  • 【面试】数据仓库面试经验总结

    目录 第一部分 自我介绍 第二部分 专业知识细问 第三部分 数据治理 第四部分 开发 代码能力 第五部分 个人性格测试 第一部分 自我介绍 通常面试官会让进行自我介绍 加项目经历介绍 大多数会按简历上的内容逐条细问 回答的时候尽量根据STA
  • VMWare15.5安装CentOS7.9

    一 创建虚拟机 创建虚拟机 选择自定义 高级 点击下一步 选择默认 点击下一步 选择 稍后安装操作系统 点击下一步 选择要安装的操作系统和版本 点击下一步 修改虚拟机名称和安装路径 点击下一步 根据需要设置处理器数量和内核数量 点击下一步
  • 006.设计原则与思想:规范与重构

    规范与重构 一 理论一 什么情况下要重构 到底重构什么 又该如何重构 1 重构的目的 为什么要重构 why 2 重构的对象 到底重构什么 what 3 重构的时机 什么时候重构 when 4 重构的方法 又该如何重构 how 二 理论二 为
  • elasticsearch-分词测试

    分词结果 tokens token 今天天气 start offset 0 end offset 4 type CN WORD position 0 token 今天 start offset 0 end offset 2 type CN
  • Android架构——ViewModel原理学习总结

    本文是楼主学习ViewModel 源码的一些总结 感觉ViewModel的源码是Android 三大架构中 最容易理解的一个了 本文ViewModel基于版本androidx lifecycle lifecycle viewmodel 2
  • Java - 表达数值的字符串(剑指offer)

    请实现一个函数用来判断字符串是否表示数值 包括整数和小数 例如 字符串 100 5e2 123 3 1416 和 1E 16 都表示数值 但是 12e 1a3 14 1 2 3 5 和 12e 4 3 都不是 剑指offer public