[LeetCode]String to Integer (atoi)
2015-07-08 20:28
344 查看
将string或const char *c转成int,首先找第一个非空字符,如果第一个非空字符是“+-0123456789”说明为有效int,否则输出0
找到非空字符后,如果第一个非空字符为符号位,记录符号,否则,继续。
符号位后的字符不是”0123456789“也是无效的int,输出0
其他情况正确处理
找到非空字符后,如果第一个非空字符为符号位,记录符号,否则,继续。
符号位后的字符不是”0123456789“也是无效的int,输出0
其他情况正确处理
/* Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases. Notes: It is intended for this problem to be specified vaguely (ie, no given input specs). You are responsible to gather all the input requirements up front. Update (2015-02-10): The signature of the C++ function had been updated. If you still see your function signature accepts a const char * argument, please click the reload button to reset your code definition. */ class Solution { public: //stoi,stod,stof(string) int myAtoi(string str) { string::size_type sz; for(sz=0; sz!=str.size(); ++sz) //找非空字符 if(str[sz]==' ') continue; else break; int flag = 1; //1 for plus if(str[sz]=='-'){ flag = -1; ++sz; } else if(str[sz]=='+'){ flag = 1; ++sz; } char c = str[sz]; long long int ret=0; if(c<'0'||c>'9') return 0; //invalid while(c>='0'&&c<='9'){ if(flag ==1) ret = 10*ret + c-'0'; else ret = 10*ret-(c-'0'); c = str[++sz]; if(ret>INT_MAX) ret = INT_MAX; else if(ret<INT_MIN) ret = INT_MIN; } return ret; } };
相关文章推荐
- 数据类型和运算符(一)
- 用mysql编译:Java Web开发实战经典(基础篇)课后题答案 060501_〖第05章:JSP基础语法〗_第01题
- 错排问题--十二金钗
- /dev/fb0入门练习(linux FrameBuffer)
- POJ1113(Wall) && Hdu1392(Surround the Trees) (计算几何--凸包)
- 《opencv入门教程》(迭代器遍历)
- mysql相关时间函数
- 执行MySql更新报错:error code [1785]
- MySQL的binlog数据如何查看
- MySQL的binlog数据如何查看
- 堆排序
- Java解析HTML之HTMLParser使用与详解
- Count the Colors
- vim温馨提示
- Mongodb的范式化和反范式化
- IOS中OC的BLOCK问题
- 数据结构与算法-约瑟夫问题
- iOS学习9_事件分发&响应链
- iOS学习9_事件分发&响应链
- 移动端高清、多屏适配方案