【剑指offer】20、表示数值的字符串(有点问题)

本文介绍了一个函数的设计思路,用于判断字符串是否能表示数值,包括整数、小数及科学计数法。通过设定消息树机制,记录特殊字符如'e/E'、'+/-'和'.'的出现状态,确保字符串符合数值表达规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目

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

解题思路

我们需要设定消息树机制,来记录”e/E“、”+/-“、”.“是否出现过。

分别来制定:

1、如果是“+/-”:、

可以出现的位置:

        字符串开始的位置;

不可以出现的位置:

        第一次的时候,出现在不是字符串的首位置,而且前面也不是“e/E”;

        第二次出现的时候,没有出现在“e/E”后面,即“+/-”的前面不是“e/E”.

2、如果是“e/E”:

不可以出现的地方:

        如果它的后面不接任何数字,就不符合规则;

        如果出现多个“e/E”也不符合规则。

        对于“.”: 出现多个“.”是不符合规则的。

        还有“e/E”的字符串出现“.”也是不符合规则的。

3、保证其他的数字是0-9之间的数字。

测试用例

 1.功能测试(正负数;含整数与不含整数部分;含与不含小数部分;含与不含指数部分;不匹配情况)

    2.特殊测试(null,空字符串)

代码

 

总结

1、考虑问题要全面

2、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值