【Swift】LeedCode 两句话中的不常见单词
由于各大平台的算法题的解法很少有Swift的版本,小编这边将会出个专辑为手撕LeetCode算法题。新手撕算法。请包涵!!!
句子 是一串由空格分隔的单词。每个 单词 仅由小写字母组成。
如果某个单词在其中一个句子中恰好出现一次,在另一个句子中却 没有出现 ,那么这个单词就是 不常见的 。
给你两个 句子 s1 和 s2 ,返回所有 不常用单词 的列表。返回列表中单词可以按 任意顺序 组织。
示例 1:
输入:s1 = "this apple is sweet", s2 = "this apple is sour"
输出:["sweet","sour"]
示例 2:
输入:s1 = "apple apple", s2 = "banana"
输出:["banana"]
提示:
1 <= s1.length, s2.length <= 200
s1 和 s2 由小写英文字母和空格组成
s1 和 s2 都不含前导或尾随空格
s1 和 s2 中的所有单词间均由单个空格分隔
Swift 解法如下:
class Solution {
func uncommonFromSentences(_ s1: String, _ s2: String) -> [String] {
//根据字符串变成单词数组
var array = s1.split(separator:" ")
var array2 = s2.split(separator:" ")
var dataArray:[String] = []
//把两个单词数组中不常见的合并合并成一个
for item in array{
dataArray.append(String("\(item)"))
}
for item in array2{
dataArray.append(String("\(item)"))
}
var deleteArray:[Int] = []
for index in 0..<dataArray.count{
for index2 in index+1..<dataArray.count{
//如果相同就将索引添加到删除数组中
if dataArray[index] == dataArray[index2]{
deleteArray.append(index)
deleteArray.append(index2)
}
}
}
deleteArray.sort(by:>)
var max = 10000
//重大往小删除不会有个数问题
for item in deleteArray{
if item < max {
dataArray.remove(at:item)
max = item
}
}
return dataArray
}
}