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 算法合集地址