复杂度分析:从字符串中删除连续的(3个以上)重复项

时间:2019-05-28 18:26:24

标签: string time-complexity complexity-theory

我写了一个解决方案,用于从字符串中删除3个(让我们称之为k)或更多连续的相同字符。 例如。

SELECT Class_02, ItemCode FROM Items

代码:

in: daabbcccbbaad out: dd
in: aaabbb out: 
in: aaabbbc out: c

对于每次比赛void removeDup(string& s, int start) { if (s.length() < 3) { return; } if (start > s.length() - 2) return; int count = 1; char c = s[start]; int i = start + 1; while (i < s.length() && s[i] == c) { ++count, ++i; } if (count >= 3) { start = i - count - 2; if (start < 0) start = 0; s.erase(i - count, count); } else { start = i; } return removeDup(s, start); } ,指针将向后移动2步。此外,由于没有匹配的字符,问题的大小也在减少。

我想了解如何对此进行复杂性分析。同样对于任何start(例如k)来说,复杂度如何变化。

ps:如果您有一个更好的解决方案,请保持不变的空间。

0 个答案:

没有答案