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

农场智能分类系统

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

全部评论

相关推荐

05-09 12:23
已编辑
华南理工大学 Java
野猪不是猪🐗:给他装的,双九+有实习的能看的上这种厂我直接吃⑨✌们拿它练练面试愣是给他整出幻觉了
点赞 评论 收藏
分享
05-03 12:45
西南大学 Java
sdgfdv:你这项目写的内容太多了,说实话都是在给自己挖坑,就算简历过了,后面面试也难受
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务