Arrays 将数组[索引]设置为引号是什么意思?
我一直在研究一个问题,目标是获取一个字符串,并在存在模式时返回最长的重复模式。例如,如果字符串为“aabbbaa”,则将返回“yes aa”。如果字符串为“aavbbbvaabbb”,则将返回“yes bbb”。我查看了其他人的解决方案,相信除了这一行之外,我还能理解每一段代码,这一行似乎很关键:Arrays 将数组[索引]设置为引号是什么意思?,arrays,ruby,algorithm,hash,pattern-matching,Arrays,Ruby,Algorithm,Hash,Pattern Matching,我一直在研究一个问题,目标是获取一个字符串,并在存在模式时返回最长的重复模式。例如,如果字符串为“aabbbaa”,则将返回“yes aa”。如果字符串为“aavbbbvaabbb”,则将返回“yes bbb”。我查看了其他人的解决方案,相信除了这一行之外,我还能理解每一段代码,这一行似乎很关键:copy[idx..idx2]=“” 以下是整个解决方案: def PatternChaser(str) patterns = {} (0..str.length-1).each do |id
copy[idx..idx2]=“”
以下是整个解决方案:
def PatternChaser(str)
patterns = {}
(0..str.length-1).each do |idx|
(idx + 1..str.length - 1).each do |idx2|
copy = str.dup
chunk = str[idx..idx2]
len = chunk.length
copy[idx..idx2] = ""
patterns[chunk] = len if copy.include?(chunk) && !patterns.include?(chunk)
end
end
return "no null" if patterns.empty?
patterns.each { |k,v| return "yes" + " " + k if v == patterns.values.max }
end
puts PatternChaser(STDIN.gets)
如果这是相当常见的语法,请原谅。到目前为止,我已经编写了不到一年的代码,到目前为止还没有找到有关StackOverflow的答案。非常感谢您的帮助!:) 字符串可以看作是一系列字符。以书面形式:
copy[idx..idx2]=""
您正在将idx
和idx2
之间的字符设置为空字符串,这意味着您正在从idx
(包含)和idx2
(包含)中删除字符
例如:
irb(main):001:0> s = "foobar"
=> "foobar"
irb(main):002:0> s[1..3] = ""
=> ""
irb(main):003:0> s
=> "far"
irb(main):007:0> s = "foobar"
=> "foobar"
irb(main):008:0> s[1..3] = "oofoob"
=> "oofoob"
irb(main):009:0> s
=> "foofoobar"
我们还可以插入另一个字符串,该字符串包含的字符数少于、等于或多于序列中的字符数。例如:
irb(main):001:0> s = "foobar"
=> "foobar"
irb(main):002:0> s[1..3] = ""
=> ""
irb(main):003:0> s
=> "far"
irb(main):007:0> s = "foobar"
=> "foobar"
irb(main):008:0> s[1..3] = "oofoob"
=> "oofoob"
irb(main):009:0> s
=> "foofoobar"
您删除了
idx
和idx2
之间的字符串内容,因此您正在删除字符。在第一个示例中,“bb”是否也重复了,就像在可能的重复重叠中一样?答案在文档中给出了实例方法。“”这对您来说是一个很好的读法。这array[index]
在你问题的标题中似乎有点误导,因为copy
是一个字符串,idx..idx
是一个范围。啊,这就很好地解释了这一点。我现在明白了。感谢您的即时回复!!