0
点赞
收藏
分享

微信扫一扫

【Swift】LeedCode 两句话中的不常见单词

hoohack 2022-02-05 阅读 27

【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
    }
}
举报

相关推荐

0 条评论