剑指offer-字符串转化为数字
2017-07-26 20:37
387 查看
问题
题目:[剑指offer-字符串转化为数字]思路
这个题,思路倒是不难。考虑的情形比较多啊。我遇见的主要bug:
1. 只有1个符号的情形
2. 由于负数的得到是正数进行转化,所以,别忘了最后的转化
3. 考虑-2147483648,先提取正数部分,2147483648,已经溢出了。所以,需要long long 存储。
4. 还有就是,字符串表示的数字有可能已经溢出了比如,+4212344212这样的数字。返回0.
代码
class Solution { public: int StrToInt(string str) { int sz = str.size(); if( !sz ) return 0; if(1==sz){ if( !isdigit(str[0]) ) return 0; } bool flg = true; for(int i = 0; i < sz; ++i){ if( 0 == i ){ if( !isdigit(str[i]) ){ if( str[0] == '-' ) flg = false; else if ( str[0] == '+' ) flg = true; else return 0; } } else{ if( !isdigit(str[i]) ) return 0; } } long long val; stringstream ss; if( flg ){ ss << str; ss >> val; } else{ ss << str.substr( 1, str.size() - 1 ); ss >> val; val *= -1; } // 加入对上溢以及下溢的判断 return (int)val; } };
相关文章推荐
- 剑指offer-将字符串转化为数字
- 剑指offer43--字符串转化成整数
- 剑指offer_表示数字的字符串
- 剑指offer——字符串转数字
- 剑指offer——字符串转数字(奥妙各种)(没有考虑科学计数法的情况)(好题)
- 剑指offer:将字符串转化为整形
- 【剑指Offer】面试题49:把字符串转化为整数
- 剑指offer面试题54 表示数字的字符串(java实现)
- 剑指Offer面试题:35.将字符串转换为数字
- 剑指offer之字符串转换为数字
- 剑指Offer面试题41和为s的两个数字与和为s的连续正数序列,面试题42翻转单词顺序与左旋转字符串
- 剑指offer:把字符串转换成数字
- 剑指offer----将字符串转化成整数
- 剑指Offer_46 把数字翻译成字符串
- 剑指Offer-46:把数字翻译成字符串
- 【剑指Offer】将字符串转化为整数
- 剑指offer 字符串左旋
- 剑指offer 旋转数组的最小数字
- 剑指offer--面试题11:旋转数组的最小数字
- 剑指offer 面试题29 数组中出现次数超过一半的数字