将一个字符串转换成一个整数,要求不能使用字符串转换成整数的库函数
数值为0或者字符串不是一个合法的数值则返回0
数据范围:字符串长度0<=n<=100
进阶:空间复杂度O(1),时间复杂度O(n)
注意:
1.字符串中可能出现任意符号,出现除+/-以外的符号直接输出0
2.字符串中可能出现+/-且仅可能出现在字符串首位
输入:输入一个字符串,包括数字字母符号,可以为空
如果是合法的数值表达则返回该数字,否则返回0
eg:输入"+2147483647"
输出2147483647
输入“-123”
输出“-123”
输入“-123”
输出“-123”
public static int StrToInt(String str) {//通过
ArrayList<Integer> arrayList = new ArrayList<>();
int bj = 0;//标记数字一共多少位
boolean b=true;//true表示正,false表示负
for (int i = 0; i < str.length(); i++) {
if (57 < str.charAt(i) || str.charAt(i) < 48) {//非数字情况
if (str.charAt(i) == '+' || str.charAt(i) == '-') {
if(str.charAt(0)=='-'){
b=false;
}
continue;
}
return 0;
} else {//是数字
arrayList.add((int) (str.charAt(i)) - 48);
bj++;
}
}
int f = 0;
//int bj2=0;//表示10的几次方,比如123=1*10^2+2*10^1+3*10^0
for (int i = 0; i < bj; i++) {
f = f + arrayList.get(bj - 1 - i) * (int) pow(10, i);
}
if(b==false){
f=-f;
}
return f;
}
public static void main(String[] args) {
int ret = StrToInt("-214");
System.out.println(ret);
}