剑指offer-把字符串转换成数字

import java.util.ArrayList;
public class Solution {
    public int StrToInt(String str) {
        //思路:遍历一遍每个字符
        //如果其中包含字母、以及其它符号,则直接返回0
        //这里有一种特殊的情况是,+或-在最前面的时候,也是合法的
        
        //关键是:要想到用字符的ASCII码进行判断
        
        if(str==null||str.length()==0){
            return 0;
        }
        //这个标记位是为了最后区分正负值用
        int flag = 1;
        char[] cs = str.toCharArray();
        if(cs[0] =='-'){
            flag = -1;
            cs[0] = '0';
        }
        if(cs[0] =='+'){
            cs[0] = '0';
        }
        ArrayList<Integer> list = new ArrayList<>();
        //先遍历一遍,把数据放入一个list中
        //这里的关键是:用这个(int)c - (int)('0') 将字符转换为数字
        for(char c : cs ){
            if(c < 48|| c > 57){
                return 0;
            }
            else{
                list.add((int)c - (int)('0'));
            }
        }
        int res = 0;
        int length = list.size();
        //用十进制表示法,个位*10的0次方,十位乘以10的1次方,以此类推
        for(int i : list){
            res = res + i * (int)Math.pow(10,length-1);
       length--; }
//乘以正负值 return res * flag; } }

 

posted @ 2021-04-29 14:42  CEO雷总  阅读(64)  评论(0编辑  收藏  举报