在我的程序中,我想确保一个字符串(字符串数组)只有特定的字符(或不同字符的具体计数,而不是更多),所以我写了这段代码,但这是一个问题,它不起作用正确。
示例:如果我们有这个char数组用于检查“hello”,我们想确保它只有“ollhevi”或更少,它应该返回true。
或更好的一个:
words = {'h','e','l','l','o'}
想要= {'a','o','h','l'}
归还假
因为你好没有'a';
理论上它是有效的。
代码
public boolean check(ArrayList<Character> words, ArrayList<Character> wanted) {
for (Character chr : words) {
if (wanted.contains(chr)) {
wanted.remove(chr);
} else {
return false;
}
}
return true;
}
答案 0 :(得分:0)
以其他方式运行for循环。
遍历有意数组中的所有字符,并查看它们是否出现在单词数组中。如果缺少任何字符,则返回false。
public boolean check(ArrayList<Character> words, ArrayList<Character> wanted) {
for (Character chr : wanted) {
if (!words.contains(chr)) {
return false;
}
}
return true;
}
答案 1 :(得分:0)
所以那是我的大错!! 谢谢你的回答 这是解决方案
public boolean check(ArrayList<Character> words, ArrayList<Character> wanted) {
for (Character chr : wanted) {
words.remove(chr);
}
return words.isEmpty();
}
答案 2 :(得分:0)
根据你的回答。检查char是否被删除更有效。如果没有,check()可以返回false并停止迭代。它更快。 Nottice thar List #remove(Object o)如果列表包含元素,则返回true。
public boolean check(ArrayList<Character> words, ArrayList<Character> wanted) {
for (Character chr : wanted) {
if(!words.remove(chr)){
return false;
}
}
return true;
}