找到没有连续重复字符的最长子字符串的长度

时间:2014-04-17 15:38:50

标签: java python algorithm

在最近的一次采访中,有人要求我找到最长的子串的长度,没有连续的重复字符。这与标准问题不同,因为它只考虑连续的重复字符。

例如:

WOOD : 2

Italics : 7

当然,这必须在 O(N)的时空中完成。

3 个答案:

答案 0 :(得分:3)

按字符逐字逐句。跟踪你已经提升了多少个字符,而不是在var中说“repeatcounter”。如果下一个字符与当前字符匹配,则计数器位于单独的变量中(仅当它大于已存在的变量时)并重置repeatcounter。

答案 1 :(得分:2)

在Python中,我会这样做:

def interview(s):
    current = longest = 0
    for index, char in enumerate(s):
        if index and char == s[index - 1]:
            longest, current = max(longest, current), 0
        current += 1
    return max(longest, current)

答案 2 :(得分:0)

public static void main(String[] args){
    String s = "italics";
    char[] c = s.toCharArray();
    int tmp = 1;
    for (int i = 1; i < s.length(); i++) {
        if (c[i] == c[i-1]){
            tmp = 0;
            continue;
        }
        tmp++;
    }
    System.out.println(tmp);
}

输出= 1

s =“italics”

输出= 7