题解 | #农场智能分类系统#
农场智能分类系统
https://www.nowcoder.com/practice/a2c9a3fce4f141a3956fe67cd00cc3e2
知识点:哈希表
思路:
- 首先,通过比较两个字符串的长度,如果不相等,则返回"NO",因为两个字符串的映射关系必须是一一对应的。
- 创建一个哈希表
mp,用于存储字符映射关系,以及一个集合seen,用于检查目标字符串中的字符是否已经被映射过。 - 遍历字符串
s中的每个字符:如果 mp 中已经存在 s[i] 的映射关系,检查当前字符是否与目标字符串 t 中对应位置的字符相等,如果不相等,则返回"NO",否则继续下一个字符的比较。如果 mp 中不存在 s[i] 的映射关系,检查目标字符串 t 中对应位置的字符是否已经被映射过,如果是,则返回"NO",否则将当前字符映射到目标字符串中的字符,并将目标字符串中的字符添加到 seen 中。 - 如果遍历完成后没有出现不相等或重复映射的情况,则返回"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";
}
}

腾讯成长空间 1090人发布