把字符串转换成整数【Java版】
把字符串转换成整数
http://www.nowcoder.com/practice/1277c681251b4372bdef344468e4f26e
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
输入一个字符串,包括数字字母符号,可以为空
public class Solution {
public int StrToInt(String str) {
if(str==null || str.length()==0)return 0;
char[] ch = str.toCharArray();
int flag = 1;//无符号默认是1
if(ch[0] == '-'){
flag = -1;
ch[0] = '0';
}
if(ch[0] == '+'){
ch[0] = '0';//+-号置为零
}
int res = 0;
for(int i=0; i<=str.length()-1; ++i){
res *= 10;//乘10放在+之前就不用判断了
int num = ch[i]-'0';
if(0<=num && num<=9){
res += num;
}
else return 0;//出现非法字符
}
return res*=flag;
}
}//时间O(n),空间O(n) String、char[]、int 三种类型,格式转换总结:
public class ChangeFormat {
public static void main(String[] args) {
int num = 2199;
String str = "2199";
char[] ch = {'2','1','9','9'};
//String->int
int num1 = Integer.valueOf(str);
System.out.println("num1 = " + num1);
//ch[]->int
int num2 = Integer.valueOf(String.valueOf(ch));//需要通过String作为中转
System.out.println("num2 = " + num2);
//int->String
String str1 = String.valueOf(num);
System.out.println("str1 = " + str1);
//ch[]->String
String str2 = String.valueOf(ch);
System.out.println("str2 = " + str2);
//String->ch[]
char[] ch1 = str.toCharArray();
System.out.print("ch1 = ");
for(int i=0; i<=ch1.length-1; ++i) System.out.print(ch1[i]);
System.out.println();
//num->ch[]
char[] ch2 = (String.valueOf(num)).toCharArray();//需要通过String作为中转
System.out.print("ch2 = ");
for(int i=0; i<=ch2.length-1; ++i) System.out.print(ch2[i]);
System.out.println();
//如果只有一位的数字,则(int <--> char)可以直接转换:
//int->ch
int n = 7;
char c = (char)('0' + n);
System.out.println("c = " + c);
//ch->int
c = '5';
n = c - '0';
System.out.println("x = " + n);
}
} 《剑指Offer-Java题解》 文章被收录于专栏
《剑指Offer-Java题解》

查看19道真题和解析