这道题放在leetcode上,多了一些需求,要求处理非法字符,其实是经典的字符串提取操作。
问题要求
一个字符串是合法的,则它的前缀必须是由若干个空格组成的(可以没有),可以有1个正负号(多个也被认为是非法的),正负号紧接着的是0-9的数字,后缀的任何非法字符都不用管。
要求:将合法的字符串转换成int数值,若转换后超过INT的范围,则对应返回其上界或下界;非法字符串统一返回0。
思路
我把解决问题的逻辑分为两部分:
1. 提取合法字符串的数字部分,并确认其正负性,非法字符串则在这个过程中被变成空串;
2. 将提取后的字符串转换成int数值。
提取字符串的过程
直接看代码和注释:
bool isNum(char ch) {
return (ch >= '0' && ch <= '9');
}