3045. 统计前后缀下标对 II(困难)
核心思想
字典树看灵神把
这里提供一个不同的版本
map存放了int[] 需重写equals 和 hashCode
class Node {
Map<MyIntArray, Node> son = new HashMap<>();
int cnt;
}
class MyIntArray{
private final int[] array;
MyIntArray(int[] array) {
this.array = array;
}
public int[] getArray() {
return array;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
MyIntArray that = (MyIntArray) o;
return Arrays.equals(array, that.array);
}
@Override
public int hashCode() {
return Arrays.hashCode(array);
}
}
class Solution {
public long countPrefixSuffixPairs(String[] words) {
long ans = 0;
Node root = new Node();
for (String S : words) {
char[] s = S.toCharArray();
int n = s.length;
Node cur = root;
for (int i = 0; i < n; i++) {
int x = s[i] - 'a';
int y = s[n - i - 1] - 'a';
MyIntArray ints = new MyIntArray(new int[]{x, y});
if (!cur.son.containsKey(ints)) {
cur.son.put(ints, new Node());
}
cur = cur.son.get(ints);
ans += cur.cnt;
}
cur.cnt++;
}
return ans;
}
}
本文作者:Shie1d
本文链接:https://www.cnblogs.com/ganyq/p/18109122
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步