码迷,mamicode.com
首页 > 其他好文 > 详细

剑指49.把字符串转换成整数

时间:2020-09-14 19:21:03      阅读:58      评论:0      收藏:0      [点我收藏+]

标签:flag   print   alt   src   方法   value   ret   image   http   

题目描述

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
 

输入描述:

输入一个字符串,包括数字字母符号,可以为空

输出描述:

如果是合法的数值表达则返回该数字,否则返回0
技术图片

 

思路

这道题主要考察如何将字符串转化为数字(不调用库函数),方法很简单,但是本题能反映出面试者的编程习惯,测试时要考虑到各种测试用例,保证代码的鲁棒性。

 

代码实现

public class Solution {
    public int StrToInt(String str) {
        if (str.length() == 0 || str.trim().length() == 0) //trim()的作用:去掉字符串首尾的空格。
            return 0;
        int index = 0;
        int flag = 0;
        long ans = 0; // 最终返回结果
        while (index < str.length()){
            if (str.charAt(index) == ‘-‘ || str.charAt(index) == ‘+‘){
                if (index == 0){
                    flag = str.charAt(index) == ‘-‘ ? -1 : 1;
                }else{
                    return 0;
                }
            }else if (str.charAt(index) >= ‘0‘ && str.charAt(index) <= ‘9‘){
                ans = ans * 10 + str.charAt(index) - ‘0‘; // char字符转化为数字的核心步骤
                if (judge(ans,flag)){ // 对ans是否溢出int类型做判断
                    return 0;
                }
            }else{
                return 0;
            }
            index++;
        }
        return flag == -1 ? flag*(int)ans : (int)ans;
    }
    private boolean judge(long ans, int flag) {
        if (flag == -1){
            if (ans * flag < Integer.MIN_VALUE){
                return true;
            }else{
                return false;
            }
        }else{
            if (ans > Integer.MAX_VALUE){
                return true;
            }else{
                return false;
            }
        }
    }
}

 

收获

int类型与char类型的相互转化

(1)int类型→char类型

(2)char类型→int类型

    public static void main(String[] args) {
        // int → char :数字加一个‘0‘,然后强转为char
        int num1 = 2;
        char cNum1 = (char)(num1 + ‘0‘);
        System.out.println(cNum1);

        int num = 456;
        String sNum = num + "";
        System.out.println(sNum);

        // char → int :将字符减去‘0‘
        char cNum2 = ‘3‘;
        int num2 = (int)cNum2 - ‘0‘;
        System.out.println(num2);

        String str1 = "345";
        int ans = 0;
        for (int i = 0; i < str1.length(); i++) {
            ans = ans * 10 + str1.charAt(i) - ‘0‘;
        }
        System.out.println(ans);
    }

 

 

剑指49.把字符串转换成整数

标签:flag   print   alt   src   方法   value   ret   image   http   

原文地址:https://www.cnblogs.com/HuangYJ/p/13597114.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!