剑指Offer_49

题目

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0

输入描述
输入一个字符串,包括数字字母符号,可以为空

输出描述
如果是合法的数值表达则返回该数字,否则返回0

示例输入

1
2
+2147483647
1a33

示例输出

1
2
2147483647
0

解题思路

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class Solution {
public int StrToInt(String str) {
int ans = 0;
boolean flag = false;
char []chars = str.toCharArray();
for(int i = 0; i < chars.length; ++i){
if(i == 0 && (chars[i] == '+' || chars[i] == '-')){
if(chars[i] == '-'){
flag = true;
}
continue;
}
if(chars[i] <= '9' && chars[i] >= '0'){
ans = ans * 10 + (chars[i] - '0');
}
else{
return 0;
}
}
return flag ? -ans : ans;
}
}