Java - 检查字符子数组(包含一些字符?)

时间:2014-11-12 16:25:31

标签: java arrays arraylist char

在我的程序中,我想确保一个字符串(字符串数组)只有特定的字符(或不同字符的具体计数,而不是更多),所以我写了这段代码,但这是一个问题,它不起作用正确。

示例:如果我们有这个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;
}

3 个答案:

答案 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;
}