1、题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
输入描述:
输入一个字符串,包括数字字母符号,可以为空
输出描述:
如果是合法的数值表达则返回该数字,否则返回0
示例1
输入
+2147483647
1a33
输出
2147483647
0
2、解题思路
1、暴力解题:直接遍历字符串即可
考虑到字符串表示的值可能超出int范围,因此使用long来统计字符串转换后的结果,返回时需转为int
public class Solution {
public int StrToInt(String str) {
if(str.length()==0) return 0;
int index=0;//表示字符串的当前索引
long sum=0;//统计当前索引所表示的整数值
if(judge(str.charAt(index))) sum=str.charAt(index)-'0';
else if(str.charAt(index)!='+'&&str.charAt(index)!='-') return 0;
index++;
while(index<str.length()){
if(!judge(str.charAt(index))) return 0;
sum=sum*10+str.charAt(index)-'0';
index++;
}
if(str.charAt(0)=='-') return (int)(-sum<Integer.MIN_VALUE?0:-sum);
else return (int)(sum>Integer.MAX_VALUE?0:sum);
}
public boolean judge(char c){
return c>='0'&&c<='9';
}
}