zoukankan      html  css  js  c++  java
  • 49、把字符串转为整数

    思路:合法字符的话,取得该位数字并不断*10相加

    注意:

    • 输入的是非法字符,null,,有非数字的字符
    • 输入的有正负号
    • 只输入+,-
    • 有没有超出最大最小的整数
    public class Solution {
        public int StrToInt(String str) {
            boolean legal ;//是否合法输入
            if(str == null || str.length() == 0){
                return 0;
              
            }
            String s = str.trim();//去掉首位字符
            int len = s.length();             
            int sign = 1;//符号标志位,1为正
            int result = 0;//返回的结果
            int limit= Integer.MAX_VALUE;//整数最大值/最小值
            int i = 0;//遍历字符每个元素
           //第一个字符非数字,只有一个符号时
            if(s.charAt(0) < '0'){
                if(s.charAt(0) == '-') {
                    limit = Integer.MIN_VALUE;
                    sign = -1;
                } else if (s.charAt(0) != '+') {
                    return 0; 
                }
                if(len == 1) {
                    return 0;
                  
                }
                i++;//
            }
            
            while(i < len){
                int c = s.charAt(i) - '0';
                if(c >= 0 && c <= 9){
                    //溢出处理
                    if(sign > 0 && (result > limit / 10 ||(result == limit / 10 &&  c > limit % 10))){
                        return 0;
    
                    } else if (sign < 0 && (result > -(limit / 10) || (result == -(limit / 10) && c > -(limit % 10)))){
                        return 0;
    
                    }
                    result = result * 10 + c;   
                    i++;
                } else {
                    return 0;
                }
            }
            legal = true;
           return sign > 0 ? result : -result;                
        }
    }
    View Code

    测试:

    功能测试:输入的字符串为正、负和0

    边界值:最大最小的整数

    输入null,非法字符,只有一个符号的,数字掺杂非法字符。

  • 相关阅读:
    翻转单词顺序
    java layout 表格项增加、删除、修改
    Hadoop学习之HBase
    protected的一些功能
    hdu4431 Mahjong
    kendo ui gird温馨提示(使用本地数据) 一个
    TOP计划猿10最佳实践文章
    Java高级应用(一个)-文件夹监控服务
    BSD介绍
    获取编译学习笔记 (十三)—— 外部中断
  • 原文地址:https://www.cnblogs.com/lingli-meng/p/7113222.html
Copyright © 2011-2022 走看看