8. String to Integer (atoi)_Swift

难度

简单

题目

将字符串转为整型,需注意各种特殊字符情况的处理。时间复杂度为: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
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容