题目描述:
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
思路解析:
- 首先判断字符串是否是null,字符串长度为0的情况
- 然后判断第一个是否是'+'或者'-',并有一个flag控制符号的
- 然后循环判断单字符数组ch[]=str.toCharArray()是否有其他非数字字符,有就返回0,没有就计算进来
代码:
public class Solution {
public int StrToInt(String str) {
if(str==null||str.length()==0)
return 0;
char ch[] = str.toCharArray();
int result =0;
int flag=1;
if(ch[0]=='-'){
flag=0;
result=trans(str.substring(1));
}else if(ch[0]=='+'){
flag=1;
result=trans(str.substring(1));
}else{
result=trans(str);
}
return flag>0?result:-result;
}
private int trans(String str){
if(str.length()==0)
return 0;
char ch[] = str.toCharArray();
int result=0;
for(int i=0;i<str.length();i++){
if(ch[i]<'0'||ch[i]>'9')
return 0;
result = result*10+(ch[i]-'0');
if(result>Long.MAX_VALUE){
result = 0;
break;
}
}
return result;
}
}