java - 比较字谜字符串时输出错误
问题描述
我正在为极客解决一个关于极客的字谜问题,但我认为输出格式与问题中所示的不同,因为我的所有代码都是正确的,但测试用例中存在问题,所以请查看我的代码并告诉我这有什么问题。
/*package whatever //do not write package name here */
import java.util.*;
import java.lang.*;
import java.io.*;
class GFG {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
sc.nextLine();
boolean isAnagram = true;
while (t-- > 0) {
String a = sc.nextLine();
String b = sc.nextLine();
int al[] = new int[256];
for (char c : a.toCharArray()) {
int index = (int) c;
al[index]++;
}
for (char c : b.toCharArray()) {
int index = (int) c;
al[index]--;
}
for (int i = 0; i < 256; i++) {
if (al[i] != 0) {
isAnagram = false;
break;
}
}
if (isAnagram) {
System.out.println("1");
} else {
System.out.println("0");
}
}
}
}
这是自定义案例的输出:
解决方案
您需要boolean isAnagram = true;
在while (t-- > 0)
循环内移动。
目前,如果在第一次测试中文本不是字谜,现有代码不会设置isAnagram
为true
.
此外,如果两个输入字符串的长度不同,则它们不能是字谜,并且显式转换char
toint
是多余的。
话虽如此,while
循环的内容应该更新如下:
while (t-- > 0) {
String a = sc.nextLine();
String b = sc.nextLine();
boolean isAnagram = a.length() == b.length();
if (isAnagram) {
int al[] = new int[256];
for (int c : a.toCharArray()) {
al[c]++;
}
for (int c : b.toCharArray()) {
al[c]--;
}
for (int i = 0; i < al.length; i++) {
if (al[i] != 0) {
isAnagram = false;
break;
}
}
}
System.out.println(isAnagram ? 1 : 0);
}
推荐阅读
- qt - 如何在 QtCreator 中分析 PySide2 + QML?
- python - 如何根据日期的月份删除表行?
- javascript - Alexa Skill - 如何进行语音密码验证?
- ruby - 如何使用 String#between?使用 DateTime 对象在 Rails 中工作?
- java - Jib maven 插件如何在不使用 docker 守护进程的情况下构建图像?
- html - 网页抓取:如何在 HTML 节点中包含引号字符
- html - 在 Reactjs 中将 html 文件设置为“主页”
- c# - 如何从左侧菜单刷新页面
- mongodb - 尽管更新了 PATH,但“找不到命令:mongod”错误
- javascript - 如何将对象从 HTML 传递到 JavaScript