iOS面试之道-字符串

字符串常规用法:

        // 字符串和数字之间的转换
        var str = "34567"
        let num = Int(str)
        let number = 3;
        let string = String(num!)
        
        // 字符串长度
        let len = str.count
        
        // 访问字符串中的单个字符,时间复杂度为O(1)
        let char = str[str.index(str.startIndex, offsetBy: 3)]
        
        // 修改字符串
        str.remove(at: str.index(str.startIndex, offsetBy: 4))
        str.append("c")
        str += "hello world"
        
        // 检测字符串是否由数字构成
        func isStrNum(str:String) -> Bool {
            return Int(str) != nil
        }
        
        // 将字符串按字母顺序
        func sortStr(str:String) -> String {
            return String(str.sorted())
        }
Google题:
给出一个字符串,要求将其按照单词顺序进行反转

swift语法知识准备
fileprivate: 表示代码可以在当前文件中被访问
泛型
inout 让值类型以引用方式传递

class p33 {
    
    fileprivate class func _reverse(_ chars:inout [T], _ start:Int, _ end:Int) {
        var start = start,end = end
        
        while start < end {
            swap(&chars, start, end)
            start += 1
            end -= 1
        }
    }
    
    
    fileprivate class func swap(_ chars:inout [T], _ p:Int, _ q:Int) {
        // 元组的用法
        (chars[p], chars[q]) = (chars[q], chars[p])
    }
    
    class func reverseWords(s:String?) -> String? {
        guard let s = s else {
            return nil
        }
        var chars = Array(s.characters), start = 0
        _reverse(&chars, start, chars.count - 1)
        
        // ..<是一个半闭区间运算符,不包含最大值的区间
        for i in 0 ..< chars.count {
            if i == chars.count-1 || chars[i+1] == " " {
                _reverse(&chars, start, i)
                start = i + 2
            }
        }
        return String(chars)
    }
}

你可能感兴趣的:(iOS面试之道-字符串)