как найти наибольшее количество букв с той же частотой - PullRequest
0 голосов
/ 25 мая 2018

Я только начал использовать java, я пытаюсь создать вложенный цикл for (без использования массивов), который дает мне, сколько букв (из алфавита) имеют частоту ноль в строке.Так что, если моя строка «test», то она должна отображать «23 буквы» в качестве ответа, потому что в строке только 3 из 26 букв.Однако в моей программе отсутствует информация.Я пытаюсь убедиться, что моя программа нацелена на конкретную частоту, которую я ищу, т.е.0.

Вот моя программа:

public class FindMaxandMinofString {

public static void main(String[] args) {         

char charToLookFor;
String s = "test";
int count = 0;

for (charToLookFor = 'a'; charToLookFor = 'z' ;charToLookFor++)
{
    for(int l = 0; l < s.length(); l++) {
        if(s.charAt(l) == charToLookFor)
        count++;
}
System.out.print(count); 

}

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Вместо того, чтобы считать счет 0, начните с счета 26 и вычитайте его всякий раз, когда вы найдете новую букву.Он импортируется в break из цикла, когда вы его найдете, иначе вы можете считать каждую букву более одного раза.

public class FindMaxandMinofString {

    public static void main(String[] args) {         

        char charToLookFor;
        String s = "test";
        int count = 26;

        for (charToLookFor = 'a'; charToLookFor <= 'z' ;charToLookFor++)
        {
            for(int l = 0; l < s.length(); l++)
            {
                if(s.charAt(l) == charToLookFor)
                {
                    count--;
                    break;
                }
            }
        }
        System.out.print(count + " letters");
    }
}
0 голосов
/ 25 мая 2018

Вы можете выполнить эту задачу, используя хэш-набор - когда вы найдете символ, добавьте его в хэш-набор.Ваш ответ будет равен 26 минус размер окончательного хэш-набора после того, как вы закончите итерацию по всей строке.

...