刷题之单词规律&&同构字符串(leetcode)

同构字符串

单词规律

两个都是映射关系,用两张哈希表记录互相映射就可以了

同构字符串:

cpp 复制代码
class Solution {
public:
    bool isIsomorphic(string s, string t) {
        //用两张哈希表做映射
        if(s.size()!=t.size())
        {
            return false;
        }
        unordered_map<char,char>tmap;
        for(int i=0;i<t.size();i++)
        {
            if(tmap.find(t[i])!=tmap.end())
            {
                if(tmap[t[i]]!=s[i])
                    return false;
            }
            else{
                tmap[t[i]]=s[i];
            }
        }

        unordered_map<char,char>smap;
        for(int i=0;i<s.size();i++)
        {
            if(smap.find(s[i])!=smap.end())
            {
                if(smap[s[i]]!=t[i])
                    return false;
            }
            else{
                smap[s[i]]=t[i];
            }
        }
        return true;
    }
};

单词规律:

cpp 复制代码
class Solution {
public:
    bool wordPattern(string pattern, string s) {
        vector<string> snum;
        int l=0;
        int r=0;
        //先把字符串分成单词
        while(l<s.size()&&r<s.size())
        {
            while(s[r]==' ')
            {
                r++;
            }
            while(r<s.size()&s[r]!=' ')
            {
                r++;
            }
            string word(s.begin()+l,s.begin()+r);
            snum.push_back(word);
            l=r+1;
        }
        if(pattern.size()!=snum.size())
            return false;
        unordered_map<char,string>cmap;
        unordered_map<string,char>smap;
        for(int i=0;i<pattern.size();i++)
        {
            if(cmap.count(pattern[i])&&cmap[pattern[i]]!=snum[i])
            {
                return false;
            }
            cmap[pattern[i]]=snum[i];
            if(smap.count(snum[i])&&smap[snum[i]]!=pattern[i])
            {
                return false;
            }
            smap[snum[i]]=pattern[i];
        }
        return true;
    }
};
相关推荐
Ddddddd_15810 分钟前
C++ | Leetcode C++题解之第421题数组中两个数的最大异或值
c++·leetcode·题解
ly-how14 分钟前
leetcode练习 二叉树的层序遍历
算法·leetcode
大二转专业40 分钟前
408算法题leetcode--第10天
考研·算法·leetcode
shark-chili1 小时前
数据结构与算法-Trie树添加与搜索
java·数据结构·算法·leetcode
小丁爱养花2 小时前
记忆化搜索专题——算法简介&力扣实战应用
java·开发语言·算法·leetcode·深度优先
楠枬5 小时前
双指针算法
java·算法·leetcode
sjsjs115 小时前
【数据结构-差分】力扣1589. 所有排列中的最大和
数据结构·算法·leetcode
孙小二写代码6 小时前
[leetcode刷题]面试经典150题之4删除有序数组中的重复项II(中等)
算法·leetcode·面试
西柚与蓝莓7 小时前
922. 按奇偶排序数组 II 双指针 力扣
数据结构·算法·leetcode
Amor风信子7 小时前
【力扣】2376. 统计特殊整数
算法·leetcode·职场和发展