题目
题目链接:https://leetcode-cn.com/problems/find-and-replace-pattern/
题目解析:主要是用map集合来保存匹配的字符串中的字符,然后再用布尔数组来判断是否正确。
代码
class Solution {
public List<String> findAndReplacePattern(String[] words, String pattern) {
//创建答案集合
List<String> list = new ArrayList<String>();
//遍历字符串数组
for (String str : words) {
//放进方法判断,如果是就添加进集合
if(match(str,pattern)) {
list.add(str);
}
}
return list;
}
private boolean match(String str, String pattern) {
//创建map集合来存放判断
Map<Character, Character> map = new HashMap<Character, Character>();
for (int i = 0; i < str.length(); i++) {
char w = str.charAt(i);
char v = pattern.charAt(i);
if(!map.containsKey(w))
map.put(w, v);
if(map.get(w)!=v)
return false;
}
boolean[] b = new boolean[26];
for (char c : map.values()) {
if(b[c-'a'])
return false;
b[c-'a'] = true;
}
return true;
}
}