【发布时间】:2017-12-07 16:38:45
【问题描述】:
判断字符串是否包含至少 1 个可重复字符。
(暗示该字符串只能包含基本的 ASCII 字母:128 个字符)。
bool hasRepeatableChar(String str) {
if (str.length() > 128) {
return true;
}
str = str.sort();
for (int i = 0; i < str.length()-1; i++) {
if (str[i] == str[i+1]) {
return true;
}
}
return false;
}
如我所见,它是:
- O(n log n) for str.length() 其中 n - 字符串的长度
- O(1) for str.length() > 128
但什么是摊销的大 O 值?
附言
也可以通过使用某种数据结构(例如map)来代替排序,它将操作量减少到O(n),但会增加内存成本。无论如何,它与问题无关。
【问题讨论】:
-
O(n log n)
-
@MauricePerry 但是为什么呢?对于某些范围 (0
-
128 个字符可能表示字符串中允许的字符,而不是长度。
标签: algorithm performance time-complexity big-o complexity-theory