Leetcode 8. String to Integer (atoi) atoi函数实现 (字符串)

题目描述

实现atoi函数,将一个字符串转化为数字

测试样例

Input: "42"
Output: 42 Input: " -42"
Output: -42 Input: "4193 with words"
Output: 4193 Input: "words and 987"
Output: 0

详细分析

这道题的corner cases非常多,请务必确保下面cases都能通过的情况下再提交。

"42"
"words and 987"
"-91283472332"
"0-1"
"-000000000000001"
" 0000000000012345678"
"10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000522545459"
"-2147483647"
"-2147483648"
"2147483648"
"2147483649"
""
"7"
" +0 123"

算法实现

class Solution {
public:
string trim(const std::string&str){
string nstr;
int i=0;
while(isspace(str[i])){
i++;
} for(;i<str.length();i++){
if(isspace(str[i])){
break;
}
nstr +=str[i];
}
return nstr;
} int myAtoi(string str) {
str = trim(str);
if(str.length()==0 || (str[0]!='+'&&str[0]!='-'&& !isdigit(str[0]))){
return 0;
} int i=0; //consume sign char
if(str[0] =='+' || str[0]=='-'){
i++;
}
string nstr;
while(isdigit(str[i])){
nstr+=str[i];
i++;
}
if(nstr.length()==0){
return 0;
}
i=0;
// consume meaningless zeros
while(nstr[i]=='0'){
i++;
}
nstr = nstr.substr(i);
long long result = 0L;
unsigned long long exp = 1;
for(int k=nstr.length()-1;k>=0;k--){
result += ((int)(nstr[k]-'0'))*exp; if(exp> numeric_limits<int>::max()){
return str[0]=='-'?numeric_limits<int>::min():numeric_limits<int>::max();
}
exp*=10;
if(result> numeric_limits<int>::max()){
return str[0]=='-'?numeric_limits<int>::min():numeric_limits<int>::max();
}
}
return str[0]=='-'?-result:result;
}
};

最新文章

  1. 学习ASP.NET缓存机制
  2. 练习一:GitHub Desktop下载及使用
  3. hdu5882 Balanced Game
  4. linux下vi命令的使用
  5. CSS Sprites优点
  6. 【无聊放个模板系列】BZOJ 3172 (AC自动机)
  7. FZU 1889 龟兔赛跑
  8. 【YFMemoryLeakDetector】人人都能理解的 iOS 内存泄露检测工具类
  9. shell 中的特殊变量
  10. window alias给cmd命令起别名
  11. 关于使用JPA中@Query注解传递表名/视图名参数的问题
  12. 【UVA534】Frogger 最小瓶颈路
  13. Oracle体系结构之Oracle静态监听配置模板
  14. matlab sparse()
  15. UI设计必用工具 — AI快捷键大全
  16. python 中的__del__
  17. MySQL权限操作:Grant、Revoke
  18. yii2.0发送qq邮件详情配置
  19. DevOps,不是一个传说!
  20. Android 自定义Camera 随笔

热门文章

  1. Oracle &amp; SQL Server 数据传输
  2. Asp.net 动态添加Meta标签
  3. java基础之io流总结一:io流概述
  4. Javamail简单使用案例
  5. nohup 无发后台运行
  6. 百度Ueditor编辑器取消多图上传对话框中的图片搜索
  7. SQL Server CLR全功略之一---CLR介绍和配置
  8. 38-最长公共子序列(dp)
  9. 多个if和一个ifelse的区别
  10. docker搭建gitbook服务