# C# Problem Solving Execerscise

I have been trying to solve this problem https://www.hackerrank.com/challenges/repeated-string and i have tryed to many things but
i 'm stuck so can you help me solving it ?

the main problem here is i want the chars inside the s string to append on itself in a short duration and the size of the string = n and then calculate how many Char 'a' in the string

while (s.Count() < n)
{

}
var cont = s.Count(x => x == 'a');
Console.WriteLine(cont);
###### Who is Participating?

Senior .Net DeveloperCommented:
Apparently there was a problem with my math.

SPOILER DON'T READ THIS CODE IF YOU DON'T WANT THE SOLUTION.

long countA = 0;
foreach (char c in s.ToCharArray())
{
if (c == 'a')
countA++;
}

long result = 0;

if (countA > 0)
{
result = (long)Math.Floor((double)countA * (n / s.Length));

for (int i = 0; i < (int) (n % s.Length); i++)
{
if (s[i] == 'a')
result++;
}
}

Console.WriteLine(result);
0

DeveloperCommented:
Programming is as much about solving the problem as it is about finding the most efficient solution.  I can tell you that the can be solved by calculating the results (which is more efficient) as opposed to creating the infinite string and then counting the characters.

-saige-
0

Senior .Net DeveloperCommented:
Yeah, you'll definitely run into timeout errors.

I'm close in my solution but it still needs work:

//test 9;
string s = "epsxyyflvrrrxzvnoenvpegvuonodjoxfwdmcvwctmekpsnamchznsoxaklzjgrqruyzavshfbmuhdwwmpbkwcuomqhiyvuztwvq";
long n = 549382313570;

long countA = 0;
foreach (char c in s.ToCharArray())
{
if (c == 'a')
countA++;
}

long result = 0;

if (countA > 0)
{
//find out the amount of times A appears as a proportion.
// so if test 1 is aba  and 10
// 2 / 3 == .66 * 10 = 6 times.
result = (long)Math.Floor(((double)countA / s.Length) * n);

//then process the leftovers.
for (int i = 0; i < (int) n % s.Length; i++)
{
if (s[i] == 'a')
result++;
}
}
Console.WriteLine(result);  // expected Result of 16481469408
0

DeveloperCommented:
As Kyle let the cat out of the bag...  ;)

Here was my implementation (same spoiler as above):
using System;
using System.Linq;

namespace EE_Q28982570
{
class Program
{
static void Main(string[] args)
{

if (string.IsNullOrEmpty(s) || n < 0)
Console.WriteLine(0);

count = (n / s.Length) * s.Count(c => c == 'a');
for (int i = 0; i < n % s.Length; i++)
{
if (s[i] == 'a')
{
count++;
}
}
Console.WriteLine(count);
}
}
}

-saige-
0

Author Commented:
Thank you guys. and thank you for respecting the Spoil for answers . you were really helpful
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.