哈希表Leetcode 1657. 确定两个字符串是否接近

如果可以使用以下操作从一个字符串得到另一个字符串,则认为两个字符串 接近 :

  • 操作 1:交换任意两个 现有 字符。
    • 例如,ab cde -> ae cdb
  • 操作 2:将一个 现有 字符的每次出现转换为另一个 现有 字符,并对另一个字符执行相同的操作。
    • 例如,aa cabb->bb cbaa(所有 a 转化为 b ,而所有的 b 转换为 a )

你可以根据需要对任意一个字符串多次使用这两种操作。

给你两个字符串,word1 和 word2 。如果word1和word2接近 ,就返回 true ;否则,返回false。

意思:两个字符串 出现字符种类一样,统计次数后,按次数排序后完全一样。

可以使用int cnt26来统计每个字母出现次数,首先判断种类是否一样,然后对cnt排序,判断排序后的次数是否一样。

cpp 复制代码
class Solution {
public:
    bool closeStrings(string word1, string word2) {
        int cnt1[26];
        int cnt2[26];
        memset(cnt1,0,sizeof(cnt1));
        memset(cnt2,0,sizeof(cnt2));
        for(auto c1:word1){
            cnt1[c1-'a']++;
         
        }
        for(auto c2:word2){
            cnt2[c2-'a']++;
        }
        for(int i=0;i<26;i++){
            if(cnt1[i]!=0&&cnt2[i]==0)return false;
            if(cnt1[i]==0&&cnt2[i]!=0)return false;
        }
        sort(cnt1,cnt1+26);
        sort(cnt2,cnt2+26);
        for(int i=0;i<26;i++){
            if(cnt1[i]!=cnt2[i])return false;
        }
        return true;

    }
};
相关推荐
Dream it possible!9 小时前
LeetCode 面试经典 150_多维动态规划_交错字符串(97_C++_中等)
算法·leetcode·面试·动态规划
心抵鹊9 小时前
算法之双指针系列(一)
算法·leetcode
十二9 小时前
【洛谷题解】P1083 [NOIP 2012 提高组] 借教室(二分答案 + 差分)
数据结构·c++·算法·蓝桥杯
小此方10 小时前
[算法实战论:动态规划]回文串问题的dp解法,回文串问题的母题,以及以此为基础的派生题
算法·动态规划
Pniubi11 小时前
力扣560.和为k的子数组
算法·leetcode·职场和发展
D e re k ZH11 小时前
C++ 从零入门(一):基础语法与程序结构
数据结构·c++·算法
Pniubi12 小时前
力扣438.找到字符串中所有字母异位词
算法·leetcode·职场和发展
東隅已逝,桑榆非晚14 小时前
算法6. 双指针法-查找总价格为目标的两个商品
c++·学习·算法
Eyfcom14 小时前
〖物联网终端实战 01〗UWB 室内高精度定位:仓储 AGV 与人员的厘米级轨迹追踪
物联网·算法·物流系统·快递系统·跨境物流快递系统·物联网终端实战
bro_Java66615 小时前
《排序的底层逻辑:比较、交换与分治》
java·算法·排序算法