美文网首页
8. String to Integer (atoi)_Swif

8. String to Integer (atoi)_Swif

作者: iOS_肖晨 | 来源:发表于2018-02-01 09:56 被阅读37次

    难度

    简单

    题目

    将字符串转为整型,需注意各种特殊字符情况的处理。时间复杂度为:O(n)。

    思路

    思路一

    写好 case 。。。

    代码

    方法一

    func myAtoi(_ str: String) -> Int {
        
        let chars = [Character](str)
        
        var result = 0
        var sign = 0
        var isPrefix = true
        
        for char in chars {
            // 1. 先判断字符串前面的空格
            if char == " " && isPrefix {
                continue
            }
            
            isPrefix = false
            
            // 2. 判断正负号
            if char == "+" || char == "-" {
                if sign != 0 {
                    break
                }
                sign = char == "+" ? 1 : -1
                continue
            }
            
            // 3. 判断合理的值
            if char >= "0" && char <= "9" {
                let charValue = Int(String(char))!
                
                // 3.1 大于最大值
                if sign >= 0 && result > ((Int(Int32.max) - charValue) / 10) {
                    return Int(Int32.max)
                }
                
                // 3.2 小于最小值
                if sign == -1 && -result < (Int(Int32.min) + charValue) / 10  {
                    return Int(Int32.min)
                }
                
                // 3.3 正常值
                result = result * 10 + charValue
            } else {
                break
            }
        }
        
        sign = sign == 0 ? 1 : sign
        
        return result * sign
    }
    

    相关文章

      网友评论

          本文标题:8. String to Integer (atoi)_Swif

          本文链接:https://www.haomeiwen.com/subject/efhlzxtx.html