如何检查一个字符串是否可以由Java中另一个字符串的字符组成?

时间:2020-04-30 03:20:31

标签: java string

如果字符串可以由字符中的字符组成,则字符串是好的。我想返回所有好的字符串的长度之和。

输入:words = [“ cat”,“ bt”,“ hat”,“ tree”],chars =“ atach”

输出:6

说明: 可以形成的字符串是“ cat”和“ hat”,因此答案是3 + 3 = 6。

下面是我编写的代码。

class Solution
{
    public int countCharacters(String[] words, String chars) 
    {
        int k = 0, count = 0;
        Set<Character> set = new HashSet<>();
        for(int i = 0; i < chars.length(); i++)
        {
            set.add(chars.charAt(i));
        }

        StringBuilder chrs = new StringBuilder();
        for(Character ch : set)
        { 
            chrs.append(ch);   
        }

        for(int i = 0; i < words.length; i++)
        {
            char[] ch = words[i].toCharArray();

            for(int j = 0; j < ch.length; j++)
            {
                if(chrs.contains("" + ch[j]))
                {
                    k++;
                }
            }

            if(k == words[i].length())
            {
                count+= k;
            }
        }

        return count;
    }
}

Output:
Line 24: error: cannot find symbol

                if(chrs.contains("" + ch[j]))

有人可以帮助我吗?访问角色时我做错了什么?

4 个答案:

答案 0 :(得分:0)

contains告诉您另一个 string 中是否包含 string 。但是在您的情况下,ch[j]不是字符串而是字符,因此您不能使用contains

相反,使用indexOf,如果字符串中不存在char,它将返回-1

答案 1 :(得分:0)

最简单的方法是

chars.contains("" + ch[i]);

答案 2 :(得分:0)

在这里,ch[j]不是字符串而是一个字符,因此您不能像完成那样使用contains。而是进行以下更改。

chars.contains(String.valueOf(ch[j]));

答案 3 :(得分:0)

我注意到的问题是您正在使用contains()比较字符串和字符。但是contains()方法是一种Java方法,用于检查String是否包含另一个子字符串。

因此您可以通过将字符转换为字符串来解决此问题。

示例1:

if(chars.contains(Character.toString(ch[j]))){
    k++;
} else {
}

Ex 2:

f(chars.contains(""+ch[j]))
{
    k++;
} else {
}

否则,您可以使用indexOf()比较字符串是否包含字符。如果字符串不包含字符,则返回-1。请参阅下面的示例。

例如:

if(chars.indexOf(ch[j])!=-1){
    k++;
} else {
}