美文网首页
2023-11-30(无限接近的字符)

2023-11-30(无限接近的字符)

作者: lotawei | 来源:发表于2023-11-29 14:17 被阅读0次

    11/30
    //如果可以使用以下操作从一个字符串得到另一个字符串,则认为两个字符串 接近 :
    //
    //操作 1:交换任意两个 现有 字符。
    //例如,abcde -> aecdb
    //操作 2:将一个 现有 字符的每次出现转换为另一个 现有 字符,并对另一个字符执行相同的操作。
    //例如,aacabb -> bbcbaa(所有 a 转化为 b ,而所有的 b 转换为 a )
    //你可以根据需要对任意一个字符串多次使用这两种操作。
    //
    //给你两个字符串,word1 和 word2 。如果 word1 和 word2 接近 ,就返回 true ;否则,返回 false 。
    //
    //
    //
    //示例 1:
    // abc bca
    //输入:word1 = "abc", word2 = "bca"
    //输出:true
    //解释:2 次操作从 word1 获得 word2 。
    //执行操作 1:"abc" -> "acb"
    //执行操作 1:"acb" -> "bca"
    //示例 2:
    //
    //输入:word1 = "a", word2 = "aa"
    //输出:false
    //解释:不管执行多少次操作,都无法从 word1 得到 word2 ,反之亦然。
    //示例 3:
    //
    //输入:word1 = "cabbba", word2 = "abbccc"
    //输出:true
    //解释:3 次操作从 word1 获得 word2 。
    //执行操作 1:"cabbba" -> "caabbb"
    //执行操作 2:"caabbb" -> "baaccc"
    //执行操作 2:"baaccc" -> "abbccc"
    //示例 4:
    //
    //输入:word1 = "cabbba", word2 = "aabbss"
    //输出:false
    //解释:不管执行多少次操作,都无法从 word1 得到 word2 ,反之亦然。

    //
    //提示:
    //
    //1 <= word1.length, word2.length <= 105
    //word1 和 word2 仅包含小写英文字母
    //思路 :1.直接判断两个字符串长度是否相等 2:判断两个字符串含有的所有字符是否相同 3:判断所有字符出现的频次是否相等
    class Solution {
    func closeStrings(_ s: String, _ t: String) -> Bool {
    var hashcharCounter1 = hashCounter(s: s)
    var hashcharCounter2 = hashCounter(s: t)
    if s.count != t.count {
    return false
    }
    print(hashcharCounter1,hashcharCounter2)
    if (hashcharCounter1.keys != hashcharCounter2.keys){
    return false
    }
    if (hashcharCounter1.values.sorted(by: {0<1}) != hashcharCounter2.values.sorted(by: {0<1})) {
    return false
    }

        return true
    }
    func hashCounter(s:String) -> [String:Int] {
        var  hashcharCounter = [String:Int]()
        for char in s {
            guard let value = hashcharCounter["\(char)"] else {
                hashcharCounter["\(char)"] = 1
                continue
            }
            hashcharCounter["\(char)"]  = value + 1
        }
        return hashcharCounter
    }
    

    }
    //bac abc true
    print(Solution().closeStrings("cabbba", "abbccc"))
    //aabbbc abbccc a:2 b:3 c:1 a:1 b:2 c:3

    相关文章

      网友评论

          本文标题:2023-11-30(无限接近的字符)

          本文链接:https://www.haomeiwen.com/subject/ctlfgdtx.html