【发布时间】:2015-05-16 22:25:09
【问题描述】:
我有一个由字符 A、B、C 和 D 组成的字符串,我正在尝试计算最长子字符串的长度,该子字符串以任意顺序具有相等数量的这些字符。 例如 ABCDB 将返回 4、ABCC 0 和 ADDBCCBA 8。
我目前的代码:
public int longestSubstring(String word) {
HashMap<Integer, String> map = new HashMap<Integer, String>();
for (int i = 0; i<word.length()-3; i++) {
map.put(i, word.substring(i, i+4));
}
StringBuilder sb;
int longest = 0;
for (int i = 0; i<map.size(); i++) {
sb = new StringBuilder();
sb.append(map.get(i));
int a = 4;
while (i<map.size()-a) {
sb.append(map.get(i+a));
a+= 4;
}
String substring = sb.toString();
if (equalAmountOfCharacters(substring)) {
int length = substring.length();
if (length > longest)
longest = length;
}
}
return longest;
}
如果字符串长度为 10^4,这目前工作得很好,但我正在尝试使其为 10^5。任何提示或建议将不胜感激。
【问题讨论】:
-
你的字符串总是4的倍数,你的子字符串只能4对齐吗?
-
字符串可以是任意长度