虽然,代码看起来很多,但是思路很简单,只要理解题意。 题目意思就是:字符串第一位只能是数字或者“+”,“-”这俩符号,后面只能是数字。(特殊用例:如果字符串为空或者只有一个字符,是0或者“+”或者“-”,返回0),处特殊用例外,如果第一个字符是“+”或者数字,后面都是数字,只输出数字即可,如果第一个字符是“-”,输出的数字要带上“-”,就这么简单。
用一个字符数组把字符串拆开放进去,字符串为空,字符串只有一个,是 “0”,“-”,“+”,都直接返回0。
定义一个结果初始化为空字符,如果字符数组第一个是“+”,“-”,数字的话,在进行接下来的判断,否则直接return 0。然后分情况,第一个是“+”,直接遍历剩下的数组,都是数字的话,放进去结果字符然后转成数字输出。第一个“-”,遍历剩下的数组,都是数字的话,放进去结果字符加上“-”号然后转成数字输出。第一个是数字,直接放进结果集,转成数字输出。
以下附上代码:(可以简化)
public int StrToInt(String str) {
if (str.length() == 0 || (str.length() == 1 && str.charAt(0) == '0')) {
return 0;
}
if(str.length() == 1 ){
if(str.charAt(0) == '-'||str.charAt(0) == '+'){
return 0;
}
}
char[] arr = str.toCharArray();
String ret = "";
for (int i = 0; i < str.length(); i++) {
arr[i] = str.charAt(i);
}
if (arr[0] == '+' || arr[0] == '-' || (arr[0] > '0' && arr[0] < '9')) {
//第一个字符是+
if (arr[0] == '+') {
for (int i = 1; i < arr.length; i++) {
if (arr[i] <= '9' && arr[i] >= '0') {
ret += arr[i];
} else {
return 0;
}
}
}
//第一个字符是-
if (arr[0] == '-') {
ret += '-';
for (int i = 1; i < arr.length; i++) {
if (arr[i] <= '9' && arr[i] >= '0') {
ret += arr[i];
} else {
return 0;
}
}
}
//第一个字符是数字
if (arr[0] > '0' && arr[0] < '9') {
for (int i = 0; i < arr.length; i++) {
if (arr[i] <= '9' && arr[i] >= '0') {
ret += arr[i];
} else {
return 0;
}
}
}
} else {
return 0;
}
//将字符串转化成数字
return swap(ret);
}
private static int swap(String ret) {
int parseInt=0;
if(ret.charAt(0)>='0'&&ret.charAt(0)<='9'){
//第一个是数字
parseInt=Integer.parseInt(ret);
}
if(ret.charAt(0)=='-'){
parseInt=Integer.parseInt(ret);
}
return parseInt;
}