import java.util.*;
public class Main_5 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
for(int i = 0; i < m; i++){
String password = sc.nextLine();
System.out.println(got(password));
}
}
public static String got(String password) {
HashMap<Character, Integer> checkpass = new HashMap<>();
Character ch = null;
Integer val = 0;
int odd = 0, even = 0;
for (int i = 0; i < password.length(); i++) {
ch = password.charAt(i);
if (checkpass.containsKey(ch) == false) {
checkpass.put(ch, 1);
} else {
val = (Integer) checkpass.get(ch);
checkpass.put(ch, val + 1);
}
}
Set<Character> hashval = checkpass.keySet();
for (Character key : hashval) {
val = (Integer) checkpass.get(key);
if (val == password.length())
return "YES";
else if (val % 2 == 1)
odd++;
else
even++;
}
if (odd == 1 || odd == 0)
return "YES";
else
return "NO";
}
}
请为自己测试 如您所见,main方法中有整数m。当我点击运行时,它使整数m好像它是get方法的一部分。这是一个代码,用于查找x字符串是否可以是排列回文。 这应该是控制台应该是什么样子:
*Input*:
3
ccaabcbb
azzza
bbbbccccdddddddd
*Output*:
NO
YES
YES
答案 0 :(得分:0)
我错了,但重写了m
:
int m = Integer.parseInt(sc.nextLine());
应该做的伎俩。使用扫描仪nextInt()
并从标准输入中读取新行时会出现问题。
答案 1 :(得分:0)
使用sc.next()而不是sc.nextLine()作为它给出第一次输入创建的空行。
Foo