zoukankan      html  css  js  c++  java
  • 剑指offer 49.综合 把字符串转换成整数

    题目描述

    将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。

    输入描述:

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

    输出描述:

    如果是合法的数值表达则返回该数字,否则返回0
    示例1

    输入

    +2147483647
        1a33

    输出

    2147483647

    0


    解题思路

    (1先用一个Map<String, Integer>将0-9的数字封装起来,如以“0”为key,以0为value;

      (2)将str转化为char[],再遍历该数组,如果char[]中存在一个元素在map中get不到,则表明该str不是一个合法的数值

    (3判断str是否是以+或-开头的,如果是则遍历数组时就不是从第0位开始的,而是从第1位开始的,如果是以-开头,后面还要以负数的形式返回

      (4)为了避免溢出,最好先用long,最后再转回int

    代码如下

    public int StrToInt(String str) {
        if (str.equals("")) {
            return 0;
        }
        Map<String, Integer> map=new HashMap<String, Integer>();
        for (int i = 0; i < 10; i++) {
            map.put(String.valueOf(i), i);    
        }
        char[] array=str.toCharArray();
        boolean flag=true;
        long result=0;
        int i=0;
        if (String.valueOf(array[0]).equals("+")||String.valueOf(array[0]).equals("-")) i=1;
        for (; i < array.length; i++) {
            if (map.get(String.valueOf(array[i]))==null) {
                flag=false;
                break;    
            }else {
                result+=map.get(String.valueOf(array[i]))*Math.pow(10, str.length()-1-i);
            }
        }
        if (!flag) {
            return 0;
        }else {
            if (String.valueOf(array[0]).equals("-")) {
                return (int)(0-result);
            }
            return (int)result;
        }
            
        }
    public static void main(String[] args) {
        StrToInt strToInt=new StrToInt();
        System.out.println(strToInt.StrToInt("36"));
    }
  • 相关阅读:
    RCP二级菜单的实现
    volatile 的作用
    C6678 核间通信(IPC)
    大小端模式详解
    SPI 极性与相位对采样的影响
    DSP c6678的启动方式
    DSP CCS初学
    volatile的作用
    JTree/DefaultMutableTreeNode 树形结构
    java.awt.Graphics2D绘制流程图基本元素
  • 原文地址:https://www.cnblogs.com/Transkai/p/11392777.html
Copyright © 2011-2022 走看看