我正在努力理解我的代码在这个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;
}
}
通过s.replaceAll("\\s ","");
,您只删除空格,但您还必须删除除标点符号等字母数字字符以外的任何字符,在本例中是,
。
您的正则表达式无效。试试这个:
s = s.replaceAll("[\\W]+", "");
\W
用于任何不是字母数字的东西。
您的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似乎从来没有被调用,无论我尝试什么。我已经设定了断点和断言,但什么都没有。我尝试过的所有其他回调都很好。我