leecode | 1657. 确定两个字符串是否接近 | 30号最后一题

判断两个字符串是否是最接近

怎么解释,最接近?

首先两个字符串的长度要一样,字符串中的字符出现的频率要一样

然后字符串中任意两个不同字符串可以直接交换

当然,多个也可以交换,例如:aacabb -> bbcbaa(所有 a 转化为 b ,而所有的 b 转换为 a )

如果转换后是另一个字符串,则说这两个字符串接近

注意:次数不限

c++ 复制代码
//这题 暴力一点,先统计 字符是否相同,再看频率是否相同,然后直接返回结果

class Solution {
public:
    bool closeStrings(string word1, string word2) {
        unordered_map<char, int> freq1, freq2;

        for (char ch : word1) {
            freq1[ch]++;
        }

        for (char ch : word2) {
            if (freq1.find(ch) == freq1.end()) {
                return false;
            }
            freq2[ch]++;
        }

        unordered_map<int, int> countFreq1, countFreq2;

        for (const auto& kv : freq1) {
            countFreq1[kv.second]++;
        }

        for (const auto& kv : freq2) {
            countFreq2[kv.second]++;
        }

        return countFreq1 == countFreq2;
    }
};

================================================================

更新

c++ 复制代码
//贴一个官方题解
//一下子,真的想不到,第一想到的,总是粗暴的,现实生活又何尝不是如此,谈恋爱、解题...
class Solution {
public:
    bool closeStrings(string word1, string word2) {
        vector<int> count1(26), count2(26);
        for (char c : word1) {
            count1[c - 'a']++;
        }
        for (char c : word2) {
            count2[c - 'a']++;
        }
        //要求字符一样,但对个数没有,字符串长度 做要求
        for (int i = 0; i < 26; i++) {
            if (count1[i] > 0 && count2[i] == 0 || count1[i] == 0 && count2[i] > 0) {
                return false;
            }
        }
        sort(count1.begin(), count1.end());
        sort(count2.begin(), count2.end());
        //排序之后,单词的出现次数,个数  是一样的,但是不能排除,元素内容是不是一样的
        return count1 == count2;
    }
};

月底小结:xxxxxxxxxx

人是靠不住的,靠墙墙倒,靠人人跑。唯有靠自己!

呆久了舒适区,就多出来反思反思

多看书,能看实体书最好!

今年也只看了几本书,看完之后,好像,并不能提升什么,就像,无法顺着成功道路成功。

多思考、毕竟都是在争夺的普通人......好吧,有点跳。。。

相关推荐
2401_8582861127 分钟前
CC52.【C++ Cont】滑动窗口
开发语言·数据结构·c++·算法·leetcode·滑动窗口
mvufi1 小时前
day31 第八章 贪心算法 part05
算法·贪心算法
珊瑚里的鱼2 小时前
第一讲 | 算法复杂度
c语言·开发语言·数据结构·笔记·算法·visualstudio·visual studio
啊阿狸不会拉杆2 小时前
人工智能数学基础(四):线性代数
人工智能·python·数学·算法·机器学习
玖剹2 小时前
矩阵区域和 --- 前缀和
数据结构·c++·算法·leetcode·矩阵·动态规划·1024程序员节
zwz宝宝2 小时前
第三次作业(密码学)
java·数据结构·算法
sxtyjty3 小时前
tarjan缩点+强联通分量
算法
freyazzr3 小时前
Leetcode刷题 | Day50_图论02_岛屿问题01_dfs两种方法+bfs一种方法
数据结构·c++·算法·leetcode·深度优先·图论·广度优先
我想进大厂3 小时前
图论---LCA(倍增法)
数据结构·c++·算法·图论
明月看潮生3 小时前
青少年编程与数学 02-018 C++数据结构与算法 16课题、贪心算法
c++·算法·青少年编程·贪心算法·编程与数学