【枚举+哈希】长度为5000,可以直接双重循环比对字符串,mapping其实是<char a, char b>的pair组,因为char只包括两个字符,所以可以自己写哈希函数:a * 256 + b
class Solution {
public boolean matchReplacement(String s, String sub, char[][] mappings) {
int m = s.length(), n = sub.length();
Set<Integer> set = new HashSet();
for(var c: mappings){
set.add(c[0] * 256 + c[1]);
}
int l = m - n;
for(var i = 0; i <= l; i++){
boolean flag = true;
for(var j = 0; j < n; j++){
if(s.charAt(i + j) != sub.charAt(j) && !set.contains(sub.charAt(j) * 256 + s.charAt(i + j))){
flag = false; break;
}
}
if(flag) return true;
}
return false;
}
}