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

全部评论

相关推荐

头像
05-12 09:14
点赞 评论 收藏
转发
2 收藏 评论
分享
牛客网
牛客企业服务