- 题目:将一给定字符串转换为整数并返回
- 说明:
- 注意处理第一个字符为'+'或者'-'的情况
- 若整数超过范围[INT_MIN,INT_MAX]则返回0
- 若起始有空格,则忽略
- 若不满足以上转整数条件,则返回0。如
"words and 987" 第一个非空字符既不是数字也不是‘+’ ‘-’故,返回0
- 思路:首先通过一个while循环定位到第一个非空字符,如果第一个非空字符既不是数字也不是'+' '-'。则返回0,否则将其解析为整数,并判断是否超过给定范围
- 代码:
class Solution { public: bool isDigit(char c) { if(c>='0' && c<='9') return true; return false; } int myAtoi(string str) { int len_str=str.size(); int start=0; long long int max_val=1; max_val=max_val<<31; while(str[start]==' ') start++; if(start==len_str) return 0; if(str[start]!='+' && str[start]!='-' && isDigit(str[start])==false) return 0; bool neg=false; if(str[start]=='+') start++; else if(str[start]=='-') { start++; neg=true; } if(isDigit(str[start])==false) return 0; long long int res=0; while(start<len_str && isDigit(str[start])==true) { res=res*10+str[start]-'0'; start++; if(res>=max_val && !neg) return INT_MAX; if(res>max_val && neg) return INT_MIN; } if(neg) return -1*res; return res; } };
【Leetcode】【String to Integer (atoi)】【字符串转整数 (atoi)】【C++】
猜你喜欢
转载自www.cnblogs.com/dreamer123/p/9163180.html
今日推荐
周排行