剑指offer---把字符串转换为整数(49)
2017-12-02 20:55
309 查看
剑指offer中这个题目没有要考虑进制的问题,也没有让考虑例如:字符串为“wes1234jing”之类的问题,凡是除了‘+’、‘-’、以及数字字符之外的字符都为不合法字符。然而在实际情况中肯定要考虑到进制以及更多的问题。因为在面试过程当中,时间比较短,所以这些问题面试官会规避,单纯的考察你的逻辑思维以及编程的风格。
#include <iostream> #include <string> #include <string.h> using namespace std; bool tmp = false; long long StrtoIntCore(const char* str,int flg) { long long num = 0; while(*str != '\0') { if(isdigit(*str)) { num = num*10 + flg*(*str - '0'); //有溢出 if( flg && num>0x7FFFFFFF || !flg && num < (signed int)0x80000000) { num = 0; break; } str++; } else //一旦有不是数字字符的字符直接认为是输入有误 { num = 0; break; } } if(*str == '\0') { //如果到了这一步,说明输入的字符串合法。所以将标记改为true; tmp = true; } return num; } int StrtoInt(const char* str) { long long num = 0; //传入的字符串不为空,或者不是传入了“\0” if(str != NULL && *str != '\0') { int myflg = 1; if(*str == '+') str++; else if(*str == '-') { myflg = -1; str++; } if(*str != '\0') //防止输入的只是一个正负号。 { num = StrtoIntCore(str,myflg); } } return int(num); } int main() { char* str = "+123"; char* str1 = "-123"; char* str2 = "+"; char* str3 = "-"; char* str4 = ""; char* str5 = NULL; char* str6 = "+113wd"; char* str7 = "0"; int value = StrtoInt(str7); if(tmp) { cout<<value<<endl; } else { cout<<value<<endl; cout<<"输入字符不合法"<<endl; } }
相关文章推荐
- 【剑指Offer学习】【面试题49:把字符串转换成整数】
- 剑指offer面试题49 把字符串转换成整数 (java实现)
- 剑指offer 面试题49 把字符串转换成整数
- [剑指offer][面试题49]把字符串转换成整数(待完善)
- (C++)剑指offer-49:把字符串转换成整数(综合)
- 剑指offer 面试题49 把字符串转换成整数
- 剑指Offer 49 把字符串转换成整数
- 剑指offer - 面试题49:把字符串转换为整数
- 剑指Offer:面试题49 把字符串转换成整数
- 【剑指Offer学习】【面试题49:把字符串转换成整数】
- 剑指offer面试题(49)把字符串转换成整数
- 剑指offer-49.把字符串转换成整数
- 剑指Offer学习总结-把字符串转换成整数
- 剑指offer题解 把字符串转换成整数(todo:考虑大整数的情况)
- 剑指offer——把字符串转换成整数
- 剑指offer — 把字符串转换成整数
- 剑指offer——把字符串转换成整数
- 剑指offer-把字符串转换成整数
- LintCode-剑指Offer-(54)转换字符串到整数
- 剑指Offer - 九度1508 - 把字符串转换成整数