Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有效回文_Java - Fatal编程技术网

Java 有效回文

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两

问题是检查字符串是否为有效回文。对于空字符串,返回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
两次,并覆盖第一个结果。 其次,在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); 
    } 
  
}