Подсчет вхождений буквы в бесконечной строке

yasserkabbout спросил: 07 октября 2018 в 11:07 в: java

У меня есть следующая строка с именем s="abcac", которая повторяется бесконечно много раз. Это означает, что s будет выглядеть следующим образом: s="abcacabcacabcacabcacabcac....", а n представляет подстроку s.

Например, , если s="monday" и n="10", рассматриваемая нами подстрока будет finalString="mondaymond", поскольку бесконечная строка будет "mondaymondaymondaymonday..." и первые 10 символы s являются "mondaymond"

Я пытаюсь посчитать вхождения буквы "a" в finalString. Этот код работает правильно, однако, когда n > 1000000, программа не будет работать.

Кроме того, если я изменю n с int на long, цикл for не будет работать в этом случае.

Каково решение этой проблемы?

public static void main(String[] args){            String s="abcac";
            int aCount=0;
            int n=1000;
            int j=0;            char[] sCharArray=s.toCharArray();            char[] finalString = new char[n];            for(int i=0;i<n;i++){                if(j==s.length())
                    j=0;                finalString[i]=sCharArray[j];
                j++;            }            for(int i=0; i<n;i++){
                if(finalString[i]=='a')
                    aCount++;
            }    System.out.println(aCount);            }

0 ответов