题解 | #农场智能分类系统#

农场智能分类系统

https://www.nowcoder.com/practice/a2c9a3fce4f141a3956fe67cd00cc3e2

知识点

哈希,字符串

思路

用两个哈希表map维护从s→t和t→s的映射。

首先,判断s和t长度是否一样,不一样肯定不同构,返回“NO”

然后,同时遍历两个字符串,由于长度一样,所以位次是对齐的,每一位之间的对应关系应该唯一。

对于当前两个字符a,b,若二者都没有映射,则建立映射,否则只需要检查双方是否有一方的映射不与另一方相同即可。

若存在一方映射与另一方不同,那就满足不同构,返回"NO"

都没有返回“NO”,则返回"YES"

代码c++

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param s string字符串 
     * @param t string字符串 
     * @return string字符串
     */
    string isIsomorphic(string s, string t) {
        // write code here
        map<char,char>mp;//s 到 t
        map<char,char>mpp;//映射是否存在
        map<char,int>mp2;// t 到 s
        map<char,int>mpp2;//映射是否存在
        if(s.size()!=t.size())return "NO";//长度比较
        for(int i=0;i<s.size();i++)
        {
              if(mp2[s[i]]==0&&mpp2[t[i]]==0)//都为0,互相建立映射
              {
                mp2[s[i]]=1;
                mpp2[t[i]]=1;
                mp[s[i]]=t[i];
                mpp[t[i]]=s[i];
              }
              else {
              if(mp[s[i]]!=t[i]||mpp[t[i]!=s[i]])return "NO";
                //一方映射与另一方不符,return “NO”
              }
        }
        return "YES";
    }
};
全部评论

相关推荐

最近经历我的处女面,还是一家大厂,笑自己不自量力,面试官态度特好,问的问题也很专业。好多问题结结巴巴说不出来,还以为自己多厉害呢。跑过去耽误人家时间……😅简历上的写的最好还是实打实,不然一问三不知。
不要卷我了:我的第一次面大厂,前面聊的好好的,直到说让我写道sql,题很简单,但是我完全没准备光刷算法题了,group by后面多写了个字段,我说我写好了面试官笑了一下,后面说要去面下一个同学了
26届校招投递进展
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务