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

农场智能分类系统

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

知识点:哈希表

思路:

  1. 首先,通过比较两个字符串的长度,如果不相等,则返回"NO",因为两个字符串的映射关系必须是一一对应的。
  2. 创建一个哈希表 mp,用于存储字符映射关系,以及一个集合 seen,用于检查目标字符串中的字符是否已经被映射过。
  3. 遍历字符串 s 中的每个字符:如果 mp 中已经存在 s[i] 的映射关系,检查当前字符是否与目标字符串 t 中对应位置的字符相等,如果不相等,则返回"NO",否则继续下一个字符的比较。如果 mp 中不存在 s[i] 的映射关系,检查目标字符串 t 中对应位置的字符是否已经被映射过,如果是,则返回"NO",否则将当前字符映射到目标字符串中的字符,并将目标字符串中的字符添加到 seen 中。
  4. 如果遍历完成后没有出现不相等或重复映射的情况,则返回"YES"。

编程语言:java

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param s string字符串
     * @param t string字符串
     * @return string字符串
     */
    public static String isIsomorphic(String s, String t) {
        int n = s.length();
        int m = t.length();
        if (m != n)
            return "NO";

        HashMap<Character, Character> mp = new HashMap<>();
        HashSet<Character> seen = new HashSet<>();

        for (int i = 0; i < n; i++) {
            if (mp.containsKey(s.charAt(i))) {
                if (mp.get(s.charAt(i)) != t.charAt(i))
                    return "NO";
                continue;
            }

            if (seen.contains(t.charAt(i)))
                return "NO";

            mp.put(s.charAt(i), t.charAt(i));
            seen.add(t.charAt(i));
        }

        return "YES";
    }
}

全部评论

相关推荐

Southyeung:我说一下我的看法(有冒犯实属抱歉):(1)简历不太美观,给我一种看都不想看的感觉,感觉字体还是排版问题;(2)numpy就一个基础包,机器学习算法是什么鬼?我感觉你把svm那些写上去都要好一点。(2)课程不要写,没人看,换成获奖经历;(3)项目太少了,至少2-3个,是在不行把网上学习的也写上去。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务