多语言展示
当前在线:795今日阅读:22今日分享:22

如何实现一个字符串转换为整数的算法

题目:给定一个字符串,将其转换为32位整数,规则如下:1. 去掉起始的空格后,第一个字符只可以为 + - 或数字,否则返回 0  2. 当第一个字符有效后,向后寻找连续数字字符,直到字符串结束或遇到非数字字符3. 对于连续数字部分,如果越界(32位带符号整型),则根据符号位返回32位整型最大或最小值,如果不越界,则返回对应整数本经验将分享两个算法,一个是通过正则匹配来处理,一个是直接处理。
工具/原料
1

Eclipse

2

JDK1.8

方法/步骤
1

正则匹配算法图示,先去掉字符串前面的空白字符,然后通过正则表达式将符合题目要求的数字型字符串解析出来,然后对数字串部分进行逐个处理(乘以10并累加),注意对于越界的判断。

2

直接处理算法图示,先判断第1位非空字符,如果不是+、- 或数字字符,则直接返回 0, 否则对其余字符进行遍历处理,此时,对于数字字符,需要进行越界判断,如果遇到非数字字符,直接跳出循环。

3

编写测试用例,测试两个算法的正确性图1示:主方法中,编写测试用例图2示:控制台输出测试结果,符合预期,算法均正确返回

4

性能测试:准备数据图示,构建 100000 个长度为 100 的随机字符串

5

编写主方法进行测试图示,编写主方法,先获取测试数据,然后分别调用两个算法对数据进行处理,并记录执行时间。

6

测试结果对比图示,取10次运行结果的平均值,直接处理算法明显优于正则匹配算法,执行效率,前者大概是后者的10倍。

注意事项

这个算法的主要考点在于越界的处理部分,即对返回数值的范围有要求

推荐信息