Java 有效回文
问题是检查字符串是否为有效回文。对于空字符串,返回true 我的代码有什么问题?输入“ab”失败Java 有效回文,java,Java,问题是检查字符串是否为有效回文。对于空字符串,返回true 我的代码有什么问题?输入“ab”失败 公共类解决方案{ 布尔b; 公共布尔值isAlindrome(字符串s){ s=s.toLowerCase(); s=s.replaceAll(“[^a-zA-Z0-9]”,“”); 如果(s.length()==1 | | s.isEmpty()) { 返回true; } 对于(inti=0;i=0&&end来说,这里有很大的逻辑缺陷 首先,在for循环中调用expandAroundCenter两
公共类解决方案{
布尔b;
公共布尔值isAlindrome(字符串s){
s=s.toLowerCase();
s=s.replaceAll(“[^a-zA-Z0-9]”,“”);
如果(s.length()==1 | | s.isEmpty())
{
返回true;
}
对于(inti=0;i=0&&end来说,这里有很大的逻辑缺陷
首先,在for
循环中调用expandAroundCenter
两次,并覆盖第一个结果。
其次,在for循环中执行此操作,并覆盖所有以前的结果。
另外,我认为你要做的事情比从中间开始更困难。从边缘开始,向内工作!
计算回文对于递归函数(调用自身的函数)来说是一个很好的机会。我将为您提供伪代码,由您来实现:
public Boolean IsPalindrome(string s)
// If we are down to 1 or zero characters, success!
// This deals nicely with odd numbered length strings
if(length <= 1)
return true;
// If the first and last don't match, it's not a palindrome
if(first letter != last letter)
return false;
// Since we know the first and last match, strip them off, then repeat
return IsPalindrome(strip first and last letter from string)
}
public Boolean IsPalindrome(字符串s)
//如果我们减少到1或0个字符,成功!
//这可以很好地处理奇数长度字符串
如果(长度如果没有约束,解决此问题的最佳方法是使用递归。
class palindrome
{
static boolean isPalRec(String str,
int s, int e)
{
if(s == "")
return true;
if (s == e)
return true;
if ((str.charAt(s)) != (str.charAt(e)))
return false;
if (s < e + 1)
return isPalRec(str, s + 1, e - 1);
return true;
}
static boolean isPalindrome(String str)
{
int n = str.length();
if (n == 0)
return true;
return isPalRec(str, 0, n - 1);
}
}
类回文
{
静态布尔值isPalRec(字符串str,
整数s,整数e)
{
如果(s==“”)
返回true;
如果(s==e)
返回true;
如果((str.charAt(s))!=(str.charAt(e)))
返回false;
如果(s
输入“ab”是失败的
,这是肯定的,因为它不是预期的错误,只是反转s
并将其与s
进行比较有什么问题?本质上是,反转。等于(s)
?
class palindrome
{
static boolean isPalRec(String str,
int s, int e)
{
if(s == "")
return true;
if (s == e)
return true;
if ((str.charAt(s)) != (str.charAt(e)))
return false;
if (s < e + 1)
return isPalRec(str, s + 1, e - 1);
return true;
}
static boolean isPalindrome(String str)
{
int n = str.length();
if (n == 0)
return true;
return isPalRec(str, 0, n - 1);
}
}