gpt4 book ai didi

java - 忽略回文检查器的大小写

转载 作者:行者123 更新时间:2023-12-01 17:16:48 25 4
gpt4 key购买 nike

这里是计算机科学初学者。我正在为一个类开发一个回文检查器,如果主方法中不需要大写,那么这完全可以正常工作。如何使 isPalindromeRecursive 方法忽略字符串大小写?

我需要弄清楚如何创建一个不区分大小写的方法。另外,我必须同时拥有 isPalindromeRecursive 和 isPalindromeIterative 方法,如果有人可以解释,我不明白其中的区别。

public class PalindromeDetector {

public static void main(String[] args) {

Scanner keyboard = new Scanner(System.in);

int count = 2;
for(int i = 0; i < count; i++ ) {

System.out.println("Enter a name.");
String name = keyboard.nextLine();

// I wanted to experiment with the new String tools we learned so my capitalization is strange.
String cap = name.substring(0, 1).toUpperCase() + name.substring(1).toLowerCase();
System.out.println(cap);

if(isPalindromeRecursive(cap))
System.out.println(cap + " is a palindrome.");
else
System.out.println(cap + " is not a palindrome.");

count++;
}

}

public static boolean isPalindromeRecursive(String s) {
if(s.length()==0 || s.length() ==1) {
return true;
}
if(s.charAt(0) == s.charAt(s.length()-1)) {
return isPalindromeRecursive(s.substring(1, s.length()-1));
}
return false;
}

}

最佳答案

您可以考虑使用 Character.toUpperCase() 方法以不区分大小写的方式比较字符

您还创建了大量 String 对象,但这并不是真正必要的。

将两者放在一起,你会得到这样的结果:

public static boolean isPalindromeRecursive(String s, int front, int back) 
{
if(front >= back) {
return true;
}

if(Character.toUpperCase(s.charAt(front)) == Character.toUpperCase(s.charAt(back))) {
return isPalindromeRecursive(s, front+1, back-1);
}
return false;
}

您可以通过以下方式调用:

for(String s : new String[] {"", "a", "ab", "aa", "aA", "aba", "abA", "abc"})
System.out.format("%s:%b%n", s, isPalindromeRecursive(s, 0, s.length()-1));

输出:

:true
a:true
ab:false
aa:true
aA:true
aba:true
abA:true
abc:false

关于java - 忽略回文检查器的大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61372326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com