LeetCode修炼——字符串转换整数(atoi)
题目描述
解题思路
由题目可知,解题需要三个步骤。首先,先去除开头的空格;其次,获取符号位;最后转字符串为整数。
处理空格问题,只需要循环判断直到不为" “。
获取符号位,首先默认符号位为正(设为1),当符号位为”-"时,标记值为-1.
处理字符串转整数型,判断当前字符是否在字符0到字符9之间,res=res*10+str.charAt(index)-‘0’;
最后别忘了判断是否过界。献上Java代码。
class Solution {
public int myAtoi(String str) {
if (str==null)
{
return 0;
}else{
int index=0,sign=1,len=str.length();
double res=0;
//调空格
while(index<len&&str.charAt(index)==' ')
index++;
//获取符号位
if((index<len)&&(str.charAt(index)=='+'||str.charAt(index)=='-'))
{
sign=1-2*((str.charAt(index)=='-')?1:0);
index++;
}
//取数字,碰到非数字退出循环
while(index<len&&str.charAt(index)>='0'&&str.charAt(index)<='9'){
res=res*10+str.charAt(index)-'0';
index++;
}
if(res>Integer.MAX_VALUE){
if(sign==1)
return Integer.MAX_VALUE;
else
return Integer.MIN_VALUE;
}else{
return sign*(int)res;
}
}
}
}
测试结果
如果有疑问或更好的idea,欢迎交流讨论,谢谢~