3138-同位字符串连接的最小长度
2024-12-20 14:55:17

思路

这题看似暴力求解会超时,实际上只要我们遍历长度的因子,就可以把数量级缩小到不会超时的程度。

因子个数为$O(logn)$个

Java语法

快速复制数组,比较数组

1
2
Arrays.copyOf(a, n);
Arrays.equals(a, b);

力扣字符串命名技巧

可以把参数的s改为大写的S,然后再把字符串数组的设为s,这样使用代码补全时更方便。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class Solution {
public int minAnagramLength(String s) {
int set[] = new int[26];
char cs[] = s.toCharArray();
int n = s.length();
for (int i = 0; i < n; i++) {
set[cs[i] - 'a']++;
if (n % (i + 1) != 0) continue;
boolean success = true;
for (int j = i + 1; j < n; j += (i + 1)) {
int[] temp = Arrays.copyOf(set, 26);
for (int k = j; k < j + i + 1; k++) {
int pos = cs[k] - 'a';
temp[pos]--;
if (temp[pos] < 0) {
success = false;
break;
}
}
if (success == false) break;
}
if (success) return i + 1;
}
return n;
}


}