/*
题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
输入描述:
输入一个字符串,包括数字字母符号,可以为空
返回值描述:
如果是合法的数值表达则返回该数字,否则返回0
示例1
输入
+2147483647"
返回值
2147483647
示例2
输入
"1a33"
返回值
0
*/
//写的极其丑陋 提交了8次 Orz --
import java.util.*;
public class Solution {
public int StrToInt(String str) {
if(str == null){
return 0;
}
if("".equals(str)){
return 0;
}
char signals = str.charAt(0);
if(signals==‘0‘&&str.length()>=1){
return 0;
}
String singal = String.valueOf(signals);
if(singal.equals("+")){
String strOfInt = str.substring(1,str.length());
int sum = trueChange(strOfInt);
return sum;
}else if(singal.equals("-")){
String strOfInt = str.substring(1,str.length());
int sum = trueChange(strOfInt);
return sum*(-1);
}
return trueChange(str);
}
public int trueChange(String str){
int sum = 0;
char [] array = str.toCharArray();
for(char c:array){
if(c<‘0‘||c>‘9‘){
return 0;
}
}
ArrayList<Character> list = new ArrayList<>();
for(char c:array){
list.add(c);
}
Collections.reverse(list);
for(int i = 0;i<list.size();i++){
String ss = String.valueOf(list.get(i));
int a = Integer.parseInt(ss);
sum += TenNPow(a,i);
}
return sum;
}
public int TenNPow(int a,int n){
//计算a乘10的n次幂
if(n==0){
return a;
}
for(int i=1;i<=n;i++){
a *= 10;
}
return a;
}
}
原文:https://www.cnblogs.com/chyEric/p/14300241.html