栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

LC 字符串转换整数 (atoi)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LC 字符串转换整数 (atoi)

 

 

纯暴力,用if语句把每种可能都列出来了 。代码比较臃肿:

class Solution {
    public int myAtoi(String s) {
        char []c = s.toCharArray();
        int num = 0;//记录正负
        int temp = 0;//判断0出现在数字之前还是数字中
        long sum = 0;//解析后的值
        int count = 0;//记录是否正确扫描到数字。
        for (int i = 0; i < c.length; i++) {
            if (c[i]==' '){
                if ((count == 0)&(num == 0)) {
                    continue;
                }
                else {
                    break;
                }
            }
            else if (c[i] == '-') {
                if ((num != 0)) {
                    if (count ==1) {
                        break;
                    }
                    else if (count == 0) {
                        return 0;
                    }
                } 
                else {
                    if (count == 0) {
                        num = -1;
                        continue;
                    }
                    else {
                        break;
                    }
                }
            }
            else if (c[i] == '+') {
                if ((num != 0)) {
                    if (count ==1) {
                        break;
                    }
                    else if (count == 0) {
                        return 0;
                    }
                }
                else {
                    if (count == 0) {
                        num = 1;
                        continue;
                    }
                    else {
                        break;
                    }
                }
            }
            else if ((temp==0)&(c[i] == '0')) {
                count = 1;
                continue;
            }
            else if ((c[i] >= 48)&(c[i] <= 57)) {
                sum = (sum * 10) + (c[i]-48);
                temp = 1;
                count = 1;
                if (sum > Integer.MAX_VALUE){
                    sum = Integer.MAX_VALUE;
                    if (num < 0) {
                        return (int)(sum * (-1)-1);
                    }
                    else {
                        return (int)sum;
                    }
                }
                continue;
            }
            else {
                if(count == 0){
                    return 0;
                }
                else if ((temp == 0)& (count == 1)) {
                    return 0;
                }
                else if ((count == 1)) {
                    break;
                }
            }
        }
        if (num < 0) {
            return (int)sum * (-1);
        }
        else {
            return (int)sum;
        }
    }
}

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/702926.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号