java - 无法在 Java 中运行 Palindrome 程序
问题描述
这是我查找字符串回文的 Java 代码。即使我输入的 i/p 不是,它也将 o/p 显示为“回文”。任何人都可以请帮忙。
String a = sc.next();
char b[] = a.toCharArray();
char d[] = b;
int size = a.length();
int beg=0,end=size-1;
while(beg<=end)
{
char temp = b[beg];
b[beg] = b[end];
b[end] = temp;
beg++;
end--;
}
if(d.equals(b))
{
System.out.print("Palindrome");
}
else
System.out.print("Not a Palindrome");
解决方案
您的实施存在一些问题。首先 -
while(beg<=end)
{
char temp = b[beg];
b[beg] = b[end];
b[end] = temp;
beg++;
end--;
}
仔细调试,看看在这个 while 循环结束时,你真的有 d[] 作为 b[] 的反面吗
第二,
if(d.equals(b))
{
System.out.print("Palindrome");
}
如果两个数组中的所有数组元素都相同,这不是比较的正确方法。如果您研究实现或尝试使用一些示例数组,您将能够自己看到它。
要检查回文,非常简单的方法是使用反转字符串StringBuilder
并检查它是否等于原始字符串 -
Scanner sc = new Scanner(System.in);
String a = sc.next();
String aRev = new StringBuilder(a).reverse().toString();
if (a.equals(aRev)) {
System.out.print("Palindrome");
} else {
System.out.print("Not a Palindrome");
}
另一种更好的方法是从字符串的开头到中间运行一个循环,并从结尾到中间保持一个索引。然后检查前向索引和后向索引。
Scanner sc = new Scanner(System.in);
String a = sc.next();
boolean palindrome = true;
for (int i = 0; i < a.length() / 2; i++) {
if (a.charAt(i) != a.charAt(a.length() - i - 1)) {
palindrome = false;
break;
}
}
System.out.println(palindrome ? "Palindrome" : "Not Palindrome");
推荐阅读
- python - 在 scipy.stats.chisquare 中处理 NaN
- python - 如何使用 django 上的按钮 id 在引导模式上显示数据库中的动态内容
- powershell - 如何通过在命令行中执行脚本来使用 Powershell 获取 INI 节文件?
- c - 如何执行 .c 文件?
- php - 在hostgator中将表格发送到电子邮件
- python - 使用 xarray 将时间坐标从 UTC 转换为本地时区
- javascript - 如何为引导面板标题设置溢出-x
- google-apps-script - 如何根据特定的列条件将一些数据移动到另一个选项卡
- clickhouse - Clickhouse:有没有办法在一个“alter table drop partition ****”查询中删除多个分区?
- vb6 - 当我更改 ComboBox 数据值时,值不会显示在标签上