leetcode-String to Integer (atoi)-8
2016-05-28 23:38
393 查看
这题目首先你要理解atoi函数的功能,然后去自己实现。
输入一个字符串,第一个非空字符是+、- 或者数字,否则直接输出0;符号后面必须必须是连续的数字(也就是数字前面最多紧接一个符号,否则输出0),遇到非数字就停止。
除了字符的格式还有就是注意整数的范围,INT_MAX,INT_MIN。我判断的地方不是很到位,所以后来直接在前面判断读入的数字的个数,如果超过10个,直接返回最大整数或最小整数。
“++123”输出0
“+ 123”输出0
“ 123”输出123
“+-123-1”输出0
“b123”输出0
输入一个字符串,第一个非空字符是+、- 或者数字,否则直接输出0;符号后面必须必须是连续的数字(也就是数字前面最多紧接一个符号,否则输出0),遇到非数字就停止。
除了字符的格式还有就是注意整数的范围,INT_MAX,INT_MIN。我判断的地方不是很到位,所以后来直接在前面判断读入的数字的个数,如果超过10个,直接返回最大整数或最小整数。
“++123”输出0
“+ 123”输出0
“ 123”输出123
“+-123-1”输出0
“b123”输出0
class Solution { public: int myAtoi(string str) { int len=str.length(); int i=0; int ans=0; int ad=0,su=0; int ok=1; int ok2=0; while(i<len){ if(!ok) break; if(str[i]=='+'){ ad++; if(ad>1) return 0; ok2=1; } else if(str[i]=='-'){ su++; if(su>1) return 0; ok2=1; } else if(str[i]>='0'&&str[i]<='9'){ if(ad>0&&ad==su) return 0; ok=1; int cnt=0; int tmp[100]; while(i<len){ tmp[cnt++]=str[i++]-'0'; if(i>=len||!(str[i]<='9'&&str[i]>='0')) break; } // for(int j=0;j<cnt;j++) cout<<tmp[j]<<" ";cout<<endl; if(cnt>10){ if(ad>=su) return INT_MAX; else return INT_MIN; } for(int j=0;j<cnt;j++){ ans=ans*10+tmp[j]; if(ans<0&&ad>=su) return INT_MAX; if(ans<0&&ad<su) return INT_MIN; // if(ans>=INT_MAX){ // ans=ad<su?(ans*(-1)):INT_MAX; // if(ad<su&&ans<INT_MIN) ans=INT_MIN; // return ans; // } } if(ad<su) ans*=-1; break; } else if(str[i]!=' '&&!ok2) ok=0; else if(ok2) ok=0; i++; } return ans; } };
相关文章推荐
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- leetcode----Longest Substring Without Repeating Characters
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum
- [LeetCode] Find the k-th Smallest Element in the Union of Two Sorted Arrays
- [LeetCode] Determine If Two Rectangles Overlap
- [LeetCode] A Distance Maximizing Problem
- leetcode_linearList
- leetcode_linearList02
- 021-Merge Two Sorted Lists(合并两个排好序的单链表);leetcode
- LeetCode[Day 1] Two Sum 题解
- LeetCode[Day 2] Median of Two Sorted Arrays 题解
- LeetCode[Day 3] Longest Substring Without... 题解
- LeetCode [Day 4] Add Two Numbers 题解