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"));
    }
  • 相关阅读:
    15、SQL基础整理(视图)
    14、SQL基础整理(存储过程)
    13、SQL基础整理(流程控制begin……end)
    12、SQL基础整理(运算符与优先级)
    11、SQL基础整理(变量)
    10、SQL基础整理(约束2)
    9、SQL基础整理(两表连接exists,join on,union)*Oracleも含む(INTERSECT&MINUS)
    20141113--SQL 事务
    20141111--SQL触发器
    20141110--SQL视图
  • 原文地址:https://www.cnblogs.com/Transkai/p/11392777.html
Copyright © 2011-2022 走看看