Repeated String

See the original problem on HackerRank.

Solutions

Let’s call l the length of the string. Thus, we have copies = n / l copies of the string.

Let’s call occ the number of occurrences of a in the string. Thus, we have at least occ * l occurrences of a.

The extra number of a is calculated from the possible remainder of the first n / l characters in the string. So we calculate the number of a in the first n%l characters.

Here is a C++ solution:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
string s; long n; 
cin >> s >> n;
int l = s.size();

auto occ = count(begin(s), end(s), 'a');
auto copies = n/l;

const auto remainder = n % l;
const auto aInFirstPart = count(begin(s), next(begin(s), remainder), 'a');

cout << (copies*occ + aInFirstPart);

An alternative solution in Python:

1
2
s, n = input().strip(), int(input().strip())
print(s.count("a") * (n // len(s)) + s[:n % len(s)].count("a"))

This simple exercise gives us the opportunity to find “perturbations” (variations) on the problem. Basically, we start from the problem as-is and we make it more or less complicated.

For example:

  • count other letters (take this information from the input)
  • search the infinite string with generators
  • don’t use loops (only use standard functions or constructs, instead)
  • don’t use the module operator
We've worked on this challenge in these gyms: modena 
comments powered by Disqus