Leetcode 3 Longest Substring Without Repeating Characters

Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for "abcabcbb" is "abc", which the length is 3. For "bbbbb" the longest substring is "b", with the length of 1.

使用Hash存储已经读入的字符,一个指针用于读入字符并存入Hash,发现Hash中存在相同字符后,另一个指针向前移动并删除Hash中之间的字符直至保持该监测到的字符唯一,并维护最大值。

def length_of_longest_substring(s)

    h = Hash.new

    max, i = 0, 0

    s.length.times do |j|

        while h[s[j]]

            h.delete(s[i])

            i += 1

        end

        h[s[j]] = 1

        max = j-i+1 > max ? j-i+1 : max

    end

    max

end

 

你可能感兴趣的:(substring)