java - 给定一个字符串,判断它是否是回文,只考虑字母数字字符并忽略大小写
问题描述
class Solution {
public boolean isPalindrome(String s) {
String str = s.toLowerCase();
int count = 0;
boolean isfalse = true;
char arr[] = new char[str.length()];
for(int i = 0;i<str.length();){
if(!Character.isLetter(str.charAt(i))){
i++;
}else{
arr[count] = str.charAt(i);
count++;
i++;
}
}
for(int i = 0;i<arr.length;i++){
int j = arr.length-count;
if(arr[i]==arr[j]){
isfalse = true;
}
}
return false;
}
}
谁能告诉我为什么我的代码不起作用,或者它是否可以与数组一起使用。任何帮助将不胜感激
解决方案
无论发生什么,您的代码都将始终返回 false。由于您没有使用定义的变量isFalse
作为return
语句。我将您的代码修改为最后一部分,即您的 for 循环并转换为 while 循环以使用双指针技术从两侧检查相等性。现在它看起来像下面这样。
public static boolean isPalindrome(String s) {
String str = s.toLowerCase();
int count = 0;
char arr[] = new char[str.length()];
for(int i = 0;i<str.length();){
if(!Character.isLetter(str.charAt(i)) && !Character.isDigit(str.charAt(i))){
i++;
}else{
arr[count] = str.charAt(i);
count++;
i++;
}
}
int i = 0;
int j = count - 1;
while (i < j) {
System.out.println(arr[i] + " : " + arr[j]);
if (arr[i] != arr[j])
return false;
i++;
j--;
}
return true;
}
尝试将这些添加到您的代码中,它应该可以工作。
推荐阅读
- java - Hibernate:外部连接配置文件
- indexing - 如果另一个表上的值包含在单元格中,则 TEXTJOIN 的 INDEX MATCH 唯一值
- laravel - 单独的自定义和供应商资产 laravel 结构
- android - Android数据绑定找不到接受参数类型*的*的setter
- css - 将 padding-right 添加到
- python - 如何将 ipynb 源文件用作笔记本?
- python-3.x - 我正在为 AutoKey 密码编写代码,但出现“str 对象不支持项目分配”的错误。有没有更好的编码方法?
- image - 带有颤振的 DOCUMENT_TEXT_DETECTION(网络)
- javascript - 状态更新事件垃圾邮件
- javascript - 创建一个重复传递的组件 onClick 或 onSubmit 的组件