题目链接:
https://www.nowcoder.com/practice/1277c681251b4372bdef344468e4f26e?tpId=13&&tqId=11202&rp=6&ru=/activity/oj&qru=/ta/coding-interviews/question-ranking
解题思路:
“123”转换的结果是
sum = 0
sum * 10+1 -->1
sum * 10+2 -->12
sum * 10+3 -->123
- 需要判断该字符串是否是空字符串, 若是空字符串, 返回0
- 处理正负号
- 如果有非法字符, 直接
break
- 注意
sum = sum * 10 + ch[i] - '0';
是解题关键
public class Solution {
public int StrToInt(String str) {
char[] ch = str.toCharArray();
if(str.isEmpty()){
return 0;
}
int symbol = 1;
if(ch[0] == '-'){
symbol = -1;
ch[0] = '0';
}
if(ch[0] == '+'){
symbol = 1;
ch[0] = '0';
}
int sum = 0;
for(int i = 0; i < ch.length; i++){
if(ch[i] < '0' || ch[i] > '9'){
sum = 0;
break;
}
sum = sum * 10 + ch[i] - '0';
}
return symbol * sum;
}
}