iOS基础

IOS 算法(基础篇) ----- 重新排列字符串

2020-10-22  本文已影响0人  ShawnAlex

题目: 给你一个字符串 s 和一个 长度相同 的整数数组 indices 。

请你重新排列字符串 s ,其中第 i 个字符需要移动到 indices[i] 指示的位置。

返回重新排列后的字符串。

示例 1:
输入:s = "abc", indices = [0,1,2]
输出:"abc"
解释:重新排列后,每个字符都还留在原来的位置上。

示例 2:
输入:s = "aiohn", indices = [3,1,4,2,0]
输出:"nihao"
解释:"aiohn" 重新排列后变为 "nihao" 。

哈希法

1.以 indices 做 key, 以 s 里面字符做 value, 生成字典
2.字典按 key 顺序依次将 value 相加 得到最后值

    func restoreString(_ s: String, _ indices: [Int]) -> String {
        
        var dic = [Int:String](), result = ""
        let s_arr = s.map{$0}
        for i in 0..<indices.count {
            dic[indices[i]] = String(s_arr[i])
        }
        for i in 0..<indices.count {
            result += dic[i] ?? ""
        }
        return result;

    }

数组法

1.将字符串s转成数组
2.数组按规律依次改变里面的元素
3.数组内元素依次拼接, 形成新字符串

enumerated() 枚举序列是一个(n, x)序列,n是从0开始连续的Int值,x是序列的元素
joined() 数组内元素, 拼接字符串方法

    func restoreString(_ s: String, _ indices: [Int]) -> String {
        
        var arr = s.map{String($0)}
        let s_arr = arr
        for (i, num) in indices.enumerated() {
            arr[num] = s_arr[i]
        }
        return arr.joined();

    }

题目来源:力扣(LeetCode) 感谢力扣爸爸 :)
IOS 算法合集地址

上一篇下一篇

猜你喜欢

热点阅读