作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这里是计算机科学初学者。我正在为一个类开发一个回文检查器,如果主方法中不需要大写,那么这完全可以正常工作。如何使 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/
我想开发一个 Skype 机器人,它将用户名作为输入,并根据用户输入以相反的字符大小写表示hello username。简而言之,如果用户输入他的名字 james,我的机器人会回复他为 Hello J
我是一名优秀的程序员,十分优秀!