将数组 [index] 设置为引号是什么意思?
What does it mean when you set an array[index] equal to quotation marks?
我一直在研究一个问题,目标是获取字符串和 return 最长的重复模式(如果存在模式)。例如,如果字符串是 "aabbbaa","yes aa" 将被 returned。如果字符串是 "aavbbbvaabbb","yes bbb" 将被 returned。我看了一下别人的解决方案,相信除了这一行似乎是关键之外的每一段代码: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)
如果这是相当常见的语法,请原谅我。到目前为止,我编写代码的时间还不到一年,而且到目前为止还无法在 Whosebug 上找到答案。帮助将不胜感激! :)
一个字符串可以看作是一个字符序列。通过写作:
copy[idx..idx2]=""
您将 idx
和 idx2
之间的字符设置为空字符串,这意味着您要删除 idx
(含)和 idx2
中的字符](含)来自 copy
字符串。
例如:
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"
我一直在研究一个问题,目标是获取字符串和 return 最长的重复模式(如果存在模式)。例如,如果字符串是 "aabbbaa","yes aa" 将被 returned。如果字符串是 "aavbbbvaabbb","yes bbb" 将被 returned。我看了一下别人的解决方案,相信除了这一行似乎是关键之外的每一段代码: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)
如果这是相当常见的语法,请原谅我。到目前为止,我编写代码的时间还不到一年,而且到目前为止还无法在 Whosebug 上找到答案。帮助将不胜感激! :)
一个字符串可以看作是一个字符序列。通过写作:
copy[idx..idx2]=""
您将 idx
和 idx2
之间的字符设置为空字符串,这意味着您要删除 idx
(含)和 idx2
中的字符](含)来自 copy
字符串。
例如:
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"