【发布时间】:2019-04-29 07:12:15
【问题描述】:
所以我一直在尝试解决一个Leetcode Question,“给定一个字符串,找出最长子字符串的长度而不重复字符。”
例如
Input: "abcabcbb"
Output: 3
Explanation: The answer is "abc", with the length of 3.
目前,在使用哈希表确定子字符串是否唯一时,我优化了我的算法。但是我的代码仍然在 O(n^2) 运行时运行,因此超过了提交期间的时间限制。
我尝试做的基本上是检查每一个可能的子字符串并检查它是否有任何重复值。当谈到这里的蛮力方法时,我是否尽可能高效?我知道还有其他方法,例如滑动窗口方法,但我正在尝试先使用蛮力方法。
# @param {String} s
# @return {Integer}
def length_of_longest_substring(s)
max_length = 0
max_string = ""
n = s.length
for i in (0..n-1)
for j in (i..n-1)
substring = s[i..j]
#puts substring
if unique(substring)
if substring.length > max_length
max_length = substring.length
max_string = substring
end
end
end
end
return max_length
end
def unique(string)
hash = Hash.new(false)
array = string.split('')
array.each do |char|
if hash[char] == true
return false
else
hash[char] = true
end
end
return true
end
【问题讨论】: