[LeedCode OJ]#8 String to Integer (atoi)
2015-08-24 11:14
435 查看
【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱:libin493073668@sina.com】
题目链接:https://leetcode.com/problems/string-to-integer-atoi/
题意:
给定一个字符串,要求将其转化为int型
思路:
这一题的坑比较多,主要考虑以下几点
1.字符串的前缀空格需要省略
2.数字前面出现多个正负号,则判错,返回0,如“++123”,“--123”,“+-123”,“-+123”
3.连续的数字被其他符号隔开,则返回前一段数字,如“ 123a321”," 123 123",都是返回123
4.如果超出了int范围(-2147483648--2147483647),返回临界最大值,也就是说如果是负数返回-2147483648,整数则返回2147483647
题目链接:https://leetcode.com/problems/string-to-integer-atoi/
题意:
给定一个字符串,要求将其转化为int型
思路:
这一题的坑比较多,主要考虑以下几点
1.字符串的前缀空格需要省略
2.数字前面出现多个正负号,则判错,返回0,如“++123”,“--123”,“+-123”,“-+123”
3.连续的数字被其他符号隔开,则返回前一段数字,如“ 123a321”," 123 123",都是返回123
4.如果超出了int范围(-2147483648--2147483647),返回临界最大值,也就是说如果是负数返回-2147483648,整数则返回2147483647
class Solution { public: int myAtoi(string str) { int len = str.length(); int i,j,flag1 = 0,flag2 = 0,num = 1,fu = 0; long long ans = 0; for(i = 0; i<len; i++)//去掉前缀空格 if(str[i]!=' ') break; for(; i<len; i++)//统计开头符号 { if(str[i]=='+') flag1++; else if(str[i]=='-') flag2++; else break; } if(flag1+flag2>1) return 0; for(; i<len; i++) { if(str[i]>='0' && str[i]<='9') { ans = ans*10+str[i]-'0'; if((!flag2)&&ans>=2147483647) return 2147483647; if(flag2&&ans>=2147483648) return -2147483648; } else break; } return flag2?-ans:ans; } };
相关文章推荐
- (leetcode)Minimum Size Subarray Sum
- ASCII与UNICODE的区别
- 蝉鸣
- 有一个坑。
- 如何判断js中的数据类型:typeof、instanceof、 constructor、 prototype方法比较
- Android笔记——RecyclerView替代ListView
- 【iOS知识学习】_iPhone学习提交git@OSC
- Android笔记——RecyclerView替代ListView
- jquery--jQuery.extend 函数详解
- Activity调用Ondestroy()方法之后内存管理器为什么没有释放占用资源
- ORA-09925: Unable to create audit trail file
- 字节数组转化为16进制字符串输出
- File(2) listFiles 文件过滤(FileFilter) 父目录getParentFile
- 黑马程序员-[OC]学习之旅-NSArray 和NSDictionary 的介绍
- vi/vim实用命令
- YIi配置debug工具、yii配置gii工具
- System.Net网络编程--AuthenticationManager和IAuthenticationModule
- 计算机网络系统--Microsoft Lync 与 腾讯通RTX 对比(转载)
- 为Windows 7添加“Internet打印”功能
- java中的反射总结