Tag Archives: c

Hackerrank Repeated String Sorusu matematiksel çözüm

Given an integer, n, find and print the number of letter a’s in the first letters of S(String)

n <= 10^6

Örneğin:

s = “abcac”

n = 10

Yeni String = “abcacabcac” (n haneli oldu ve tekrar edebildiği kadar tekrar etti)

Bizden istenen ise string içerisindeki a karakterinin sayısı: sonuç olarak 4

Çözüm:

n/s yapıldığı zaman kaç kere birinci string kümesinin kaç kere repeat yapıldığını bulabilirim. Örnekte kalan 0 ve bölüm ise 2. S içerisinde 2 adet a vardı. 2*2 den 4 adet olacağını anlıyorum. Eğer kalan olsaydı ayrıca for döngüsünü kalan sayısı kadar dönüp a ların sayısnı bulabilirim

long repeatedString(char* s, long n) {

    long strCount = strlen(s);
    long aCount = 0;
    for (int i = 0; i < strCount; i++) {
        if(s[i] == 'a'){
            aCount++;
        }
    }

    long reminder =  n % strCount;
    long division = n / strCount;
    aCount = aCount * division;

    for (int i = 0; i < reminder; i++) {
        if(s[i] == 'a'){
            aCount++;
        }
    }

    return aCount;

}