String to Integer (atoi) ???
#define INT_MAX 2147483647
#define INT_MIN -2147483648
class Solution {
public:
int atoi(const char *str) {
//string如果能转换成int的话,各位都要是数字,一个例外是第一个字符可以是负号
int n=strlen(str);
int i=0;
int flag=0;//0表示正值,1表示负值
int val=0;
/*
if(str[0]=='-')
{
i=1;
flag=1;
}
else if(str[0]=='+')//1、好吧,我承认刚开始我只记得负号要单独判断,忘记了正号了,~~~~(>_<)~~~~
{
i=1;
}
//2、好吧,我服了,还有空格,我也都没有考虑,空格可能出现的位置:开头,中间,结尾
//3、我彻底服了,空格在开头和结尾还不能够一视同仁呀,因为" -123"~~~~(>_<)~~~~
*/
//这个是专门处理开头空格滴
/*
while(i<n)
{
if(str[i]==' ')
++i;
else if(str[i]=='-')
{
++i;
flag=1;
break;
}
else if(str[i]=='+')
{
++i;
break;
}
}
*///一直显示超时,调试才发现这里是个死循环,晕
while(i<n)
{
if(str[i]==' ')
++i;
else if(str[i]=='-')
{
++i;
flag=1;
break;
}
else if(str[i]=='+')
{
++i;
break;
}
else
break;
}
while(i<n)
{
//if(str[i]==' ') //其实字符串中间有空格的话,算是能转为int呀还是不能转为int呀,纠结,我的写法是算是能转了
//++i;//如果用for时,因为后面已经++i了,所以这里应该是空操作,不能再写++i了
//Input:" -0012a42" Output:0 Expected:-12 测试用例的意思是,把能返回的第一串都给返回了
//if(str[i]<'9'&&str[i]>'0') //写错了吧
if(str[i]<='9'&&str[i]>='0')
{
//val=val*10+str[i];
val=val*10+(str[i]-'0');
++i;//这里用的是while,所以这里要手动++i;
}
else
{
//return 0;//如果字符串不能转换为int的话,返回什么呀,这个很纠结呀,提交的错误用例说明返回值应该是0
break;
}
}
if(flag)
val=-val;
//Input: "2147483648" Expected: 2147483647
// If the correct value is out of the range of representable values, INT_MAX (2147483647) or INT_MIN (-2147483648) is returned.
if(flag==0&&val<)//判断是否溢出
return INT_MAX;
else if(flag==1&&val>0)
return INT_MIN;
else
return val;
}
};
刚开始我没有看提示,直接做的,然后就各种错呀
Requirements for atoi:
The function first discards as many whitespace characters as necessary until the first non-whitespace character is found. Then, starting from this character, takes an optional initial plus or minus sign followed by as many numerical digits as possible, and interprets them as a numerical value. The string can contain additional characters after those that form the integral number, which are ignored and have no effect on the behavior of this function. If the first sequence of non-whitespace characters in str is not a valid integral number, or if no such sequence exists because either str is empty or it contains only whitespace characters, no conversion is performed. If no valid conversion could be performed, a zero value is returned. If the correct value is out of the range of representable values, INT_MAX (2147483647) or INT_MIN (-2147483648) is returned.
Submission Result: Wrong Answer
| Input: | " 10522545459" |
| Output: | 1932610867 |
| Expected: | 2147483647 |
说明我的溢出判断那个地方写的不对,对于这道题目来说,怎么判断溢出,什么时候判断溢出,我觉得如果在最后判断溢出是不好的,因为输入的是字符串,不能知道它的int值是多少就不能和之后出来的值比较,所以判断溢出应该是在转换的过程中判断的,至于具体怎么做,我想不到,看看别人是怎么写的吧:http://blog.csdn.net/ithomer/article/details/8800530
class Solution {
public:
int atoi(const char *str) {
int i=;
int n=strlen(str);
int flag=;
int value=;
int digit=;
while(*str!='\0')
{
if(*str==' ')
{
str++;
}
else if(*str=='-')
{
flag=;
str++;
break;
}
else if(*str=='+')
{
str++;
break;
}
else
{
break;
}
}
while(*str!='\0')
{
if(*str<=''&&*str>='')
{
digit=*str-'';
//要满INT_MIN<=val*10+digit<=INT_MAX
if(flag==&&value>(INT_MAX-digit)/)
return INT_MAX;
//else if(value<(INT_MIN-digit)/10)//负值不能这么算
else if(flag==&&value>(-INT_MIN-digit)/)
return INT_MIN;
else
{
value=value*+digit;
str++;
}
}
else
{
break;
}
}
if(flag)
value=-value;
return value;
}
};
Submission Result: Wrong Answer
| Input: | " -00134" |
| Output: | -2147483648 |
| Expected: | -134 |
不明真相,我在codeblocks中跑了代码,输入" -00134",输出的就是-134,不知道到底是怎么回事
String to Integer (atoi) ???的更多相关文章
- Kotlin实现LeetCode算法题之String to Integer (atoi)
题目String to Integer (atoi)(难度Medium) 大意是找出给定字串开头部分的整型数值,忽略开头的空格,注意符号,对超出Integer的数做取边界值处理. 方案1 class ...
- 【leetcode】String to Integer (atoi)
String to Integer (atoi) Implement atoi to convert a string to an integer. Hint: Carefully consider ...
- No.008 String to Integer (atoi)
8. String to Integer (atoi) Total Accepted: 112863 Total Submissions: 825433 Difficulty: Easy Implem ...
- leetcode第八题 String to Integer (atoi) (java)
String to Integer (atoi) time=272ms accepted 需考虑各种可能出现的情况 public class Solution { public int atoi( ...
- leetcode day6 -- String to Integer (atoi) && Best Time to Buy and Sell Stock I II III
1. String to Integer (atoi) Implement atoi to convert a string to an integer. Hint: Carefully con ...
- String to Integer (atoi) - 字符串转为整形,atoi 函数(Java )
String to Integer (atoi) Implement atoi to convert a string to an integer. [函数说明]atoi() 函数会扫描 str 字符 ...
- LeetCode--No.008 String to Integer (atoi)
8. String to Integer (atoi) Total Accepted: 112863 Total Submissions: 825433 Difficulty: Easy Implem ...
- leetcode-algorithms-8 String to Integer (atoi)
leetcode-algorithms-8 String to Integer (atoi) Implement atoi which converts a string to an integer. ...
- LeetCode: String to Integer (atoi) 解题报告
String to Integer (atoi) Implement atoi to convert a string to an integer. Hint: Carefully consider ...
- 《LeetBook》leetcode题解(8): String to Integer (atoi) [E]——正负号处理
我现在在做一个叫<leetbook>的免费开源书项目,力求提供最易懂的中文思路,目前把解题思路都同步更新到gitbook上了,需要的同学可以去看看 书的地址:https://hk029.g ...
随机推荐
- socket长连接和短链接区别
短连接 连接->传输数据->关闭连接 HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束后就中断连接.短连接是指SOCKET连接后发送后接收完数据后马上断 ...
- HTML——部分MP4在谷歌浏览器上无法播放
Chrome浏览器支持HTML5,它支持原生播放部分的MP4格式(不用通过Flash等插件). 为什么是部分MP4呢?MP4有非常复杂的含义(见http://en.wikipedia.org/wiki ...
- hibernate框架环境搭建与使用
搭建环境 一.新建一个项目 , 导包 一个是hibernate的jar包,一个是jdbc的jar包 hibernate的jar包 这些jar包全部导入 二.配置Hibernate. 1.建立hib ...
- Application的作用
Application可实现数据共享 例如: 一.新建一个空的工程,并新建一个App类,继承自Application public class App extends Application { pr ...
- 面试题总结(三)、《STL源码剖析》相关面试题总结
声明:本文主要探讨与STL实现相关的面试题,主要参考侯捷的<STL源码剖析>,每一个知识点讨论力求简洁,便于记忆,但讨论深度有限,如要深入研究可点击参考链接,希望对正在找工作的同学有点帮助 ...
- Java IO流读写文件的几个注意点
平时写IO相关代码机会挺少的,但却都知道使用BufferedXXXX来读写效率高,没想到里面还有这么多陷阱,这两天突然被其中一个陷阱折腾一下:读一个文件,然后写到另外一个文件,前后两个文件居然不 ...
- jQuery 绑定事件总结
目前已知有: $("..").bind("事件名",fn); $("parent").on("事件名","se ...
- (九)java位运算符
位运算符 &(与),|(或),^(异或),~(取反),<<(左移),>>(右移),>>>(无符号右移) 1:为true,0为false ...
- cocos2d-x android8.0 视频层遮挡问题
cocos里默认情况下视频层是在cocos 层的上面,如果希望把视频层放在cocos的下面的话, android8.0以下,把Cocos2dxVideoHelper.java里的 videoView. ...
- Struts2 级联下拉框 详解析
目录(?)[+] 运行环境:myeclipse8.6+jboss5.1+jvm1.6 先看最后目录结构: 直接上源码: complexFormTag.jsp: <%@ page language ...