700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 剑指offer——面试题49:把字符串转换成整数

剑指offer——面试题49:把字符串转换成整数

时间:2022-01-21 00:23:29

相关推荐

剑指offer——面试题49:把字符串转换成整数

剑指offer——面试题49:把字符串转换成整数

Solution1:

代码写的啰嗦,但思路清晰。。LeetCode上有相似的题目并考虑了溢出,可以参考LeetCode8答案

class Solution {//题目没有考虑到溢出的情况,不是很完美呀~但在牛客网上也能AC了~public:int StrToInt(string str) { //1.去掉首尾空格;2.首字符只能是+、-或数字(若是其他字符,return 0;),并用sign标记;3.若首位非正负号,则全部字符应在‘0’-‘9’之间if (str.size() == 0) //字符串为空return 0;string str_copy = str.substr(str.find_first_not_of(' ')); //删掉头部空格str_copy = str_copy.erase(str.find_last_not_of(' ') + 1); //删掉尾部空格int sign = 1;if (str_copy[0] == '-') {sign = -1;str_copy = str_copy.erase(0, 1);//删掉符号字符if (str_copy.size() == 0)return 0;} else if(str_copy[0] == '+') {sign = 1;str_copy = str_copy.erase(0, 1);//删掉符号字符if(str_copy.size() == 0)return 0;} else if(str_copy[0] < '0' || str_copy[0] > '9') { //其它非正负号及数字的字符,return 0;return 0;}//到这一步为止得到的字符串是去掉首位空格及符号位的字符串,若该字符串中含有非数字字符,则return 0;//否则转化为数字*sign 返回该值。溢出的情况怎么办,题目没说明。。。for (int i = 0; i < str_copy.size(); i++) {if(str_copy[i] < '0' || str_copy[i] > '9')return 0;}return sign * my_strtoint(str_copy);}int my_strtoint(string str) {int result = 0, base = 1, len_str = 0;while(str != "") {len_str = str.size();result += (str[len_str-1] - '0') * base;base *= 10;str.erase(len_str - 1);}return result;}};

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。