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

农场智能分类系统

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

import java.util.*;


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

        Map<Character, Character> map = new HashMap<>();

        for (int i = 0; i < s.length(); i++) {
            char sChar = s.charAt(i);
            char tChar = t.charAt(i);

            if (map.containsKey(sChar)) {
                if (map.get(sChar) != tChar) {
                    return "NO";
                }
            } else {
                // 检查 tChar 是否已经被映射过,如果是,则说明存在不同字符映射到同一个字符的情况,返回 "NO"
                if (map.containsValue(tChar)) {
                    return "NO";
                }
                map.put(sChar, tChar);
            }
        }

        return "YES";
    }
}

该题考察的知识点是字符串处理和哈希表的应用。

在代码中,我使用哈希表来建立字符的映射关系。遍历两个字符串,对于每个字符,检查它们在哈希表中的映射关系是否满足同构定义的要求。

判断两个字符串的长度是否相等,如果不相等则直接返回 "NO",因为不可能存在一一映射的关系。

初始化一个空的哈希表 map 来存储字符的映射关系。

遍历字符串 s 和 t,对于每个字符,进行以下操作:

  • 如果字符 sChar 已经存在于 map 中,检查它是否映射到字符 tChar。如果不是,则说明存在不同的映射关系,返回 "NO"。
  • 否则,将 sChar 和 tChar 添加到 map 中。

在添加映射关系之前,还需要检查字符 tChar 是否已经被映射过。如果是,则说明存在不同字符映射到同一个字符上的情况,返回 "NO"。

如果以上步骤都通过了,说明两种分类方式是同构的,返回 "YES"。

最终返回值是一个字符串,表示两种分类方式是否同构。

该算法的时间复杂度为O(n),其中n为字符串的长度。

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 14:06
点赞 评论 收藏
分享
05-26 10:24
门头沟学院 Java
qq乃乃好喝到咩噗茶:其实是对的,线上面试容易被人当野怪刷了
找工作时遇到的神仙HR
点赞 评论 收藏
分享
07-11 13:16
湖南工学院 Java
坚定的芭乐反对画饼_...:谁也不知道,毕竟现在的互联网和十年前已经完全不同了,谁都无法预测未来
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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