题面
Implement atoi to convert a string to an integer.
Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.
Notes: It is intended for this problem to be specified vaguely (ie, no given input specs). You are responsible to gather all the input requirements up front.
题解
题面是不难的:把一段字符串转化为int类型的数字。
难的是处理—–>
边界条件
- 前面为空格,正负号的时候
设立一个startindex索引位,如果是空格,索引位和处理位同时加一
遇到正负号以后,更改flag
开始接收数字 - 如果中途遇上字符
直接break;返回结果 - 如果result比int的range大
超出了就返回integer.MAX_VALUE
低了就返回integer.MIN_VALUE
先用long类型存储结果,记得加L
最后在转化为int类型。
code
public class Solution {
public int myAtoi(String str) {
char[] strs=str.toCharArray();
long result=0L;
int startindex=0;
boolean flag=true;//正数
for(int i=0;i<strs.length;i++){
if(startindex==i){
if (strs[i]==' '||strs[i]=='0'){
startindex++;
continue;
}
if (strs[i]=='-'){
flag=false;
continue;
}
if (strs[i]=='+'){
continue;
}
}
if(strs[i]<='9'&&strs[i]>='0'){
result=result*10+strs[i]-'0';
if (i-startindex>10)
break;
}
else{
break;
}
}
if(flag){
if (result>Integer.MAX_VALUE)
result=Integer.MAX_VALUE;
}
else{
result=-result;
if (result<Integer.MIN_VALUE)
result=Integer.MIN_VALUE;
}
return (int)result;
}
}