Как проверить, можно ли сформировать строку из символов другой строки в Java? - PullRequest
0 голосов
/ 30 апреля 2020

Строка хороша, если она может быть образована символами из символов. Я хочу вернуть сумму длин всех хороших строк в словах.

Ввод: words = ["cat", "bt", "hat", "tree"], chars = "atach"

Вывод: 6

Объяснение: Строки, которые можно сформировать - это "кошка" и "шляпа", поэтому ответом является 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 голосов
/ 30 апреля 2020

Я заметил, что вы используете contains() для сравнения строки и символа. Но метод contains() является методом Java, чтобы проверить, содержит ли String другую подстроку или нет.

Таким образом, вы можете решить эту проблему путем преобразования символа в строку.

Пример 1:

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

Пример 2:

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

В противном случае, Вы можете сравнить, если строка содержит символ, используя indexOf(). Если строка не содержит символ, она возвращает -1. Пожалуйста, обратитесь к приведенному ниже примеру.

Пример:

if(chars.indexOf(ch[j])!=-1){
    k++;
} else {
}
0 голосов
/ 30 апреля 2020

самый простой способ это

chars.contains("" + ch[i]);
0 голосов
/ 30 апреля 2020

Здесь ch[j] - это не строка, а символ, поэтому вы не можете использовать содержимое, как сделали. Вместо этого внесите следующие изменения.

chars.contains(String.valueOf(ch[j]));
0 голосов
/ 30 апреля 2020

contains сообщает, содержится ли строка в другой строке . Но в вашем случае ch[j] не строка, а символ, поэтому вы не можете использовать contains.

Вместо этого используйте indexOf, он возвращает -1, если символ отсутствует в строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...