JZ53 表示数值的字符串

描述

请实现一个函数用来判断字符串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 <= 20
2.str 仅含英文字母(大写和小写),数字(0-9),加号 '+' ,减号 '-' ,空格 ' ' 或者点 '.' 。
3.如果怀疑用例是不是能表示为数值的,可以使用python的print(float(str))去查看
 
 

示例1

输入:
"123.45e+6"
返回值:
true

示例2

输入:
"1.2.3"
返回值:
false

示例3

输入:
"."
返回值:
false

示例4

输入:
"    .2  "
返回值:
true

 ==================================================================================================================

 

解题思路:

  通过判断几个特殊的字符,比如'.'、'+' 、'e'或者'E',不满足条件就直接return false,再在结束的时候判断最后的字符是不是数字,或者是数字后面的'.',如果是就return true,如果不是就return false。

或者正则表达式也可以匹配。

使用正则表达式进行匹配。

[]  : 字符集合
()  : 分组
?   : 重复 0 ~ 1 次
+   : 重复 1 ~ n 次
*   : 重复 0 ~ n 次
.   : 任意字符
\\. : 转义后的 .
\\d : 数字
[+-]?\\d*(\\.\\d+)?([eE][+-]?\\d+)?


posted @ 2021-08-29 16:40  好的好的,  阅读(64)  评论(0编辑  收藏  举报