给一个pattern, check true or false, 比如abbba->cdddc就是true
sol: 每个字母一种映射(hashmap)
follow up: 一次check很多string, 比如给abbba, check一个字典里面所有跟他pattern相同的,返回一个List
sol: 编码abbba->12221,然后check
class Solution {
public List<String> findPattern(String src, String[] dict) {
List<String> rst = new ArrayList<>();
if (src == null || src.length() == 0 || dict == null || dict.length == 0) {
return rst;
}
String sr = coding(src);
for (String s : dict) {
String temp = coding(s);
if (temp.equals(sr)) {
rst.add(s);
}
}
return rst;
}
private String coding(String s) {
if (s == null || s.length() == 0) {
return s;
}
Map<Character, Integer> map = new HashMap<>();
char[] rst = new char[s.length()];
char[] src = s.toCharArray();
int cnt = 0;
for (int i = 0; i < s.length(); i++) {
char c = src[i];
if (!map.containsKey(c)) {
map.put(c, ++cnt);
}
rst[i] = Character.forDigit(map.get(c), 10);
}
return new String(rst);
}
}