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

农场智能分类系统

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";
    }
}

全部评论

相关推荐

09-19 13:59
门头沟学院 Java
用微笑面对困难:Trae一下,如果真成了,他用了直接发字节起诉代码版权,,这个代码不商用是没问题的如果没成也是情理之中的。
点赞 评论 收藏
分享
10-31 13:04
南华大学 Java
嵌入式的小白:很多面试,面试前不会去打扰cto的,但一般cto不会在这些小事上刷人,只能说这个cto比较操心,啥重要不重要,紧急不紧急的,估计都会过问,平淡看待吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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