Ruby最长回文是一个编程问题,要求找出给定字符串中的最长回文子串。嵌套的while循环是一种解决该问题的常见方法之一。
回文是指正读和反读都相同的字符串。嵌套的while循环可以用来遍历字符串的所有可能的子串,并判断它们是否是回文。具体的解决方案如下:
Ruby语言中的代码示例:
def longest_palindrome(s)
max_length = 0
start = 0
end_pos = 0
i = 0
while i < s.length
j = i
k = i
while k < s.length - 1 && s[k] == s[k + 1]
k += 1
end
while j > 0 && k < s.length - 1 && s[j - 1] == s[k + 1]
j -= 1
k += 1
end
if k - j + 1 > max_length
max_length = k - j + 1
start = j
end_pos = k
end
i = k + 1
end
return s[start..end_pos]
end
# 示例用法
puts longest_palindrome("babad") # 输出 "bab"
puts longest_palindrome("cbbd") # 输出 "bb"
这段代码使用了两个嵌套的while循环,外层循环遍历字符串的每个字符,内层循环用于判断以当前字符为中心的回文子串的长度。通过不断更新max_length、start和end的值,最终得到最长回文子串。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云