我正在编写一个程序来递归地确定一个字符串是否为回文。我决定尝试使用正则表达式,但我在理解语法方面遇到了一些麻烦。我需要做的是比较第一个和最后一个字符,看看它们是否相同。我该怎么做呢?
谢谢!
编辑:我发现这很有帮助:AirSource Ltd's answer to Degvik's question
最佳答案
是的,如果第一个和最后一个字符相同,您可以使用正则表达式来确定:
str.matches("(.).*\\1")
这使用“后向引用”来引用“组 1”,它捕获第一个字符。
例子:
"aba".matches("(.).*\\1") // true
"abc".matches("(.).*\\1") // false
然后您可以递归地删除第一个和最后一个字符并再次检查:
public static boolean isPalindrome(String str) {
return str.length() < 2 ||
(str.matches("(.).*\\1") && isPalindrome(str.substring(1, str.length() - 1)));
}
关于java正则表达式查找第一个和最后一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12486905/