LeetCode -- String to Integer (atoi)

本文介绍了一种将字符串转换为整数的算法实现过程,包括处理负数、跳过前导零、处理超出整数范围的情况等。通过具体代码示例展示了如何逐个字符检查并构建最终的整数值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述:
Implement atoi to convert a string to an integer.


Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.


Notes: It is intended for this problem to be specified vaguely (ie, no given input specs). You are responsible to gather all the input requirements up front.


就是完成字符串转整数的操作。
本题的复杂点在于情况很多需要考虑:
1.可能是负数。
2.首字母为+
3.跳过开始的'0'
4.超大整数(使用double来解析)


public class Solution {
    public int MyAtoi(string str) {
        if(string.IsNullOrWhiteSpace(str)){
            return 0;
        }
        str = str.Trim();
		
        var digits = "0123456789";
        
        if(str.Length > 1 && !digits.Contains(str[0]) && !digits.Contains(str[1])){
            return 0;
        }
        
        var s1 = "";
		var c = 0;
        if(str[0] == '-'){
            s1 = "-";
			c++;
        }
        
        // skip '+'
		if(str[0] == '+'){
			c++;
		}
		
		//skip all starting '0' 
        while(c < str.Length && str[c] == '0'){
            c ++;
        }
        
        // start from non-zero number , collect all valid digit char
        while(c < str.Length && digits.Contains(str[c])){
            s1 += str[c];
            c++;
        }
		
        double v;
        if(double.TryParse(s1, out v)){
            if(v > int.MaxValue){
				return int.MaxValue;
			}
			if(v < int.MinValue){
				return int.MinValue;
			}
			return (int)v;
        }
        return 0;
        
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值