此项目用于确定用户的输入是否为回文,如果不是,则确定不匹配的字符数及其在字符串中的位置(即字符2和4不匹配)。我已经能够弄清楚如何识别字符串是否是回文,但我一直在纠结如何明确识别非回文中不匹配的字符。以下是目前为止我的代码:
import java.util.Scanner;
public class Palindrome
{
public static void main(String[] args)
{
String stringInput = "";
String inputReverse = "";
boolean isPalindrome = true;
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter a string: ");
stringInput = keyboard.nextLine();
int stringLength = stringInput.length();
for(int i = stringLength - 1; i >=0; i--)
{
inputReverse = inputReverse + stringInput.charAt(i);
}
if(stringInput.equals(inputReverse))
{
System.out.println(stringInput + " is a valid palindrome.");
}
else
{
System.out.println(stringInput + " is not a valid palindrome.");
}
}
}
当字符串不是回文时,我想要的输出是:"索引0和3处的字符不匹配。goop不是有效的回文。无效字符匹配数:1英寸
我尝试使用stringInput. charAt(0),但是用户输入是不可预测的,所以我不能永远使用char 0,1,2,3等。
2条答案
按热度按时间mnemlml81#
从字符串的两端迭代,向中间移动,每次检查相应的字符。
blmhpbnm2#
由于这是home work,我只给予一般性的提示:
inputReverse = new StringBuilder(stringInput).reverse().toString();
int
的for
循环(从0到长度的一半),并将其传递给charAt()
,用于两个字符串,然后使用==
进行比较List<Integer>
中