当前位置: 首页 > 知识库问答 >
问题:

Leetcode有效回文问题调试[重复]

卢枫涟
2023-03-14

我正在努力理解我的代码在这个Leetcode问题上出了什么问题。

问题:给定一个字符串,确定它是否是回文,只考虑字母数字字符,忽略大小写。

现在,我通过了108/476个案例,我没有通过这个测试:“一个人,一个计划,一条运河:巴拿马”。

这是我的代码,请帮我识别问题!

class Solution {
public boolean isPalindrome(String s) {

    if (s.isEmpty()) return true;

    s.replaceAll("\\s+","");

    int i = 0;
    int j = s.length() - 1;

    while (i <= j) {

        if (Character.toLowerCase(s.charAt(i)) != Character.toLowerCase(s.charAt(j))) {

            return false;

        }

        i++;
        j--;

    }

    return true;

}
}

共有3个答案

龙博
2023-03-14

通过s.replaceAll("\\s ","");,您只删除空格,但您还必须删除除标点符号等字母数字字符以外的任何字符,在本例中是

费学
2023-03-14

您的正则表达式无效。试试这个:

s = s.replaceAll("[\\W]+", "");

\W用于任何不是字母数字的东西。

郜联
2023-03-14

您的replaceAll方法当前仅删除空格。它应该删除所有特殊字符,只保留字母。如果我们像您一样使用正则表达式,这是最好的正则表达式之一:

s = s.replaceAll("[^a-zA-Z]+","");

您可能会倾向于使用\W(或[^\w]),但是这个最新的正则表达式匹配[a-zA-Z0-9_],包括数字和下划线字符。这就是你想要的吗?然后转而使用\W。如果没有,坚持[^a-zA-Z]

如果要匹配所有字母,无论使用何种语言,请使用以下命令:

s = s.replace("\\P{L}", "");

请注意,您可以像这样大幅缩短代码,尽管它肯定不是最快的:

class Solution {
  public boolean isPalindrome(String s) {
    s = s.replaceAll("\\P{L}", "");
    return new StringBuilder(s).reverse().toString().equalsIgnoreCase(s);
  }
}
 类似资料:
  • 我正在使用带有代码交换验证密钥(PKCE)的OAUTH2.0身份验证服务来访问Spotify令牌。我用我的BundleID和重定向URI在Spotify注册了我的应用程序。 问题是,在我输入了Spotify登录的电子邮件和密码后,我会用URL中的代码重定向到RedirectUri,但什么也没有发生。 这里是我的代码: 身份验证用户的代码 这正确地打开了我的Safari,但随后我用访问URL中的令牌

  • 我对编码和练习leetcode问题还不熟悉。整数反向问题涉及溢出。 我已经搜索并讨论了关于如何处理溢出的大部分内容。有人能解释一下溢出的原因吗?

  • 我不确定Twilio Authy的register\u user()的成功回调是否正在启动。在我的代码中 尽管新用户已成功添加到Authy,且响应状态为200。 我想在register\u user()的成功回调中设置authyUsrId的值,并在发送给POST请求的JSON响应中使用它。 但在回应中,我只得到了这个 <代码>{姓名:'你好'} 是否有任何方法可以调试register\u user

  • 我的应用程序应该更新,如果tmx是新的,如果旧的什么都不做,如果不存在插入文件。如果文档被插入,它工作完美,否则它不能正确更新或说E11000 dup密钥。想弄清楚我的回调是不是错了还是逻辑。(我是node.js+MongoDB的新手)MongoClient=require(“MongoDB”).MongoClient,assert=require(“assert”),url=“MongoDB:/

  • 我目前正在创建一个轻量级的程序来查看和操作类似于程序Blender或3DS max的3D对象。 我正在使用C、GLFW和OpenGL。虽然我计划让它跨平台,但我目前只在一台运行Debian9.0(stretch)和XFCE桌面环境的计算机上工作。 目前回调glfwSetDropCallback似乎从来没有被调用,无论我尝试什么。我已经设定了断点和断言,但什么都没有。我尝试过的所有其他回调都很好。我