把字符串转换成整数【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题解》