首页 > 试题广场 >

表示数值的字符串

[编程题]表示数值的字符串
  • 热度指数:66888 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
请实现一个函数用来判断字符串str是否表示数值(包括科学计数法的数字,小数和整数)。

科学计数法的数字(按顺序)可以分成以下几个部分:
1.若干空格
2.一个整数或者小数
3.(可选)一个 'e' 或 'E' ,后面跟着一个整数(可正可负)
4.若干空格

小数(按顺序)可以分成以下几个部分:
1.若干空格
2.(可选)一个符号字符('+' 或 '-')
3. 可能是以下描述格式之一:
3.1 至少一位数字,后面跟着一个点 '.'
3.2 至少一位数字,后面跟着一个点 '.' ,后面再跟着至少一位数字
3.3 一个点 '.' ,后面跟着至少一位数字
4.若干空格

整数(按顺序)可以分成以下几个部分:
1.若干空格
2.(可选)一个符号字符('+''-')
3. 至少一位数字
4.若干空格


例如,字符串["+100","5e2","-123","3.1416","-1E-16"]都表示数值。
但是["12e","1a3.14","1.2.3","+-5","12e+4.3"]都不是数值。

提示:
1.1 <= str.length <= 25
2.str 仅含英文字母(大写和小写),数字(0-9),加号 '+' ,减号 '-' ,空格 ' ' 或者点 '.' 。
3.如果怀疑用例是不是能表示为数值的,可以使用python的print(float(str))去查看
进阶:时间复杂度,空间复杂度

示例1

输入

"123.45e+6"

输出

true
示例2

输入

"1.2.3"

输出

false
示例3

输入

"."

输出

false
示例4

输入

"    .2  "

输出

true
头像 Maokt
发表于 2021-06-28 16:20:44
精华题解 算法思想一:有限状态自动机 解题思路: 根据字符类型和合法数值的特点,先定义状态 字符类型: 空格 「 」、数字「 0—9 」 、正负号 「 +- 」 、小数点 「 .」 、幂符号 「 eE 」 状态定义: 按照字符串从左到右的顺序,定义以下 9 种状态。 1.开始的空格 2. 展开全文
头像 不是江小白
发表于 2021-07-01 13:53:51
精华题解 1. 正向思路 此题要判断字符串是否表示数值?通过对示例的观察可以发现能判断为数值的字符串大致可分为以下四种: - 是否有前/后 空格或符号位(即 + 、- 两种符号)?- 是否有整数?- 是否有小数点?- 是否有指数e/E? 由于每种还包含多个小方向,于是掌柜第一想法是用 正则表达式来解此题。 2 展开全文
头像 江南好___
发表于 2021-06-28 23:42:46
精华题解 描述 题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e& 展开全文
头像 牛客题解官
发表于 2022-04-25 19:05:21
精华题解 题目的主要信息: 实现一个函数判断字符串是否表示数字 包括科学记数法的数字:一个整数或小数,后接一个可选的大小写字母e,后接一个可正可负的整数 小数,可选的正负号,小数点前后整数任意有一个即可 整数,可选的正负号,加上后面的整数 字符串可能包含前导、后导空格 举一反三: 学习完本题的思路你可以解 展开全文
头像 咪咪虾条001
发表于 2021-02-26 21:24:00
使用正则表达式: import java.util.*; import java.util.regex.Pattern; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 展开全文
头像 Hewon
发表于 2021-04-12 09:57:22
Java娱乐向解,哈哈哈。 import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param str string 展开全文
头像 小桥流水少年梦
发表于 2021-06-29 13:32:27
题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e&quo 展开全文
头像 要成为超级兵的小兵
发表于 2021-03-19 22:31:55
/* 参考剑指offer,改动了一些小部分。 数值可以表示为 A[.[B]]e|E[C] 其中A 和C 可以带有正负号,B不能带有符号 A可以没有,B也可以没有,不过在'.'的情况下 在e|E ,B是必须有的,所以这就是在判断str[index]=='.' 和s 展开全文
头像 1666
发表于 2021-03-18 18:04:54
public boolean isNumeric (String str) { char[] chars = str.toCharArray(); boolean point = false;//表示小数点是否已存在 boolean e = false;//表示e是否已存在 展开全文
头像 大翔队的马教练
发表于 2021-03-04 12:12:01
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param str string字符串 # @return bool布尔型 #class Solution: def isNumeric(self , str ): # 展开全文
头像 hello-king
发表于 2021-08-09 13:54:32
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param str string字符串 * @ 展开全文
头像 天地蜉蝣
发表于 2021-09-30 10:45:40
#include<bits/stdc++.h> class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param str string字符串 展开全文
头像 牛客639909525号
发表于 2021-10-10 09:16:16
package main /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param str string字符串 * @return bool布尔型 */ import ( "strconv" "strings" ) 展开全文
头像 卫巨神
发表于 2022-03-08 16:52:56
代码非常有条理,不加注释应该页能看懂吧...小数判断会利用到整数判断,科学计数法判断需要用到整数判断和小数判断,所以新建了3个函数。 class Solution: def isNumeric(self , str: str) -> bool: # write code 展开全文