Leetcode 8. String to Integer (atoi)
来源:互联网 发布:php crm 开源 编辑:程序博客网 时间:2024/06/07 18:57
题意:实现atoi();
思路:题目简单,坑不好趟,改了好久
atoi()规则如下:
1.忽略首空格
2.如果碰见不合法的输入,以最大能匹配的合法输入计算:
比如123abc 会输出 123
234T32 会输出 234
否则返回0
3.支持加号
4.如果上溢出,则输出最大值;如果下溢出,则输出最小值
代码如下:(不建议看,写的太乱了)
int myAtoi(string str) { // if(str.size() > 11) // return 0; int i; long long num=0; int legalChar[300]; char maxnum[] = "2147483647"; //合法字符 memset(legalChar,0,sizeof(legalChar)); // legalChar['.'] =1; legalChar['-'] = 1; legalChar['+'] = 1; for(int numb='0';numb<='9';numb++) legalChar[numb] = 100; //过滤首空格 if(str[0] == ' '){ for(i=0;i<str.size();i++){ if(str[i] != ' ') break; } str.erase(0,i); } //带有的字符是否合法 for(i=0;i<str.size();i++){ if(legalChar[str[i]]) legalChar[str[i]] --; else{ str.erase(i,str.size()-i); } } if(legalChar['+']==0 && legalChar['-']==0)//+,-只能存在一个 return 0; //字符位置是否合法 if(legalChar['-']==0 || legalChar['+']==0){//+,-在第一位 if(str[0]!='+' && str[0]!='-') return 0; } //是否会溢出 int flag=0,minus=0;//flag是符号标记,minus是负数标记 if(legalChar['-']==0 || legalChar['+']==0){ flag=1; if(legalChar['-'] == 0) minus=1; } if(str.size() > 15){//长度不符 if(minus) return 1<<31; return ~(1<<31); } /* if(str == "-2147483648" ) return -2147483648; if(str.size() == 10+flag){ for(i=0;i+flag<str.size();i++){ if(str[i+flag] > maxnum[i]) return 0; if(str[i+flag] < maxnum[i]) break; } }*/ //得到结果 for(i=0;i+flag<str.size();i++){ num = str[i+flag] - 48 + num *10; } if(minus) num = -num; if(num < (1<<31)) return (1<<31); if(num > (~(1<<31))) return (~(1<<31)); return num; }
0 0
- [LeetCode]8. String to Integer (atoi)
- LeetCode 8. String to Integer (atoi)
- 8. String to Integer (atoi) Leetcode Python
- LeetCode --- 8. String to Integer (atoi)
- LeetCode 8.String to Integer (atoi)
- [Leetcode] 8. String to Integer (atoi)
- [leetcode] 8.String to Integer (atoi)
- [LeetCode] 8.String to Integer (atoi)
- <LeetCode OJ> 8. String to Integer (atoi)
- leetCode 8. String to Integer (atoi)
- 8. String to Integer (atoi) LeetCode
- leetcode 8. String to Integer (atoi)
- leetcode 8. String to Integer (atoi)
- LeetCode OJ 8.String to Integer (atoi)
- Leetcode ☞ 8. String to Integer (atoi)
- 8. String to Integer (atoi) ---Leetcode
- leetcode 8. String to Integer (atoi)
- Leetcode: 8. String to Integer (atoi)(JAVA)
- java链接mysql数据库避免乱码的神语句
- 网易2017内推笔试编程题合集(二)(第三题) 不要二
- lua 游戏开发_技能定义字段
- NBUT 1668 反函数
- 菜鸟学习见解(1)
- Leetcode 8. String to Integer (atoi)
- 添加RichEdit控件导致MFC对话框程序无法执行的解决方法
- 51Nod-1103-N的倍数
- 图解Oracle用户管理
- 第九轮回 没有卵用的寻求帮助
- Simple Line Editor
- c++四种强制类型转化的区别
- 网站排名的基本原则
- Activity launchMode详解