首页 > 代码库 > leetcode:atoi
leetcode:atoi
转换原则:忽略前导空格,从+-或数字开始转换,中间出现非数字break,注意判断乘法加法溢出,大于INT_MAX输出INT_MAX,小于INT_MIN输出INT_MIN
int atoi(const char *str) { if (str==NULL) { return 0; } int ans=0,pos=1,pre; while (*str==‘ ‘|| *str==‘\t‘) ++str; if (*str==‘-‘){ pos=-1; ++str; } else if (*str==‘+‘) { pos=1; ++str; } if (!isdigit(*str)) return 0; ans=(*str-‘0‘)*pos; ++str; for (;*str!=‘\0‘;++str){ if (isdigit(*str)){ pre=ans; if (pos==1&&pre>INT_MAX/10){ ans=INT_MAX; break; } if (pos==-1&&pre<INT_MIN/10){ ans=INT_MIN; break; } pre=ans*10; ans=ans*10+(*str-‘0‘)*pos; if (pos==1&&ans<pre){ ans=INT_MAX; break; } if (pos==-1&&ans>pre){ ans=INT_MIN; break; } } else break; } return ans;}
leetcode:atoi
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。