【发布时间】:2018-11-27 23:07:21
【问题描述】:
我在 Hackerrank 中做如下挑战之一:
Lilah 有一个字符串 s,由她重复的小写英文字母组成 无限多次。
给定一个整数 n,找出并打印出字母 a 的个数 Lilah 无限字符串的前 n 个字母。 第一行包含一个字符串 s。 第二行包含一个整数 n。
我需要打印一个整数,表示无限重复 S 多次创建的无限字符串的前 N 个字母中字母 a 的数量。
例如:
s 是 'aba', n = 10.. 无限字符串的前 n = 10 个字母 是 'abaabaabaa...' 因为有 7 个 a,所以我们会得到 7 作为最终答案
这是我的答案。它通过了前两个案例,但其余的都失败了。
function repeatedString(s, n) {
var repeat = Math.round(n / s.length);
var remainder = n % s.length;
var answer = 0;
for (var i = 0; i < s.length; i++) {
if (s.charAt(i) == 'a') {
answer += repeat;
if (i < remainder)
answer++;
}
}
return answer;
}
如果有人可以看看这个并提出更好的解决方案,那就太好了。
【问题讨论】:
-
编程的美妙之处在于通过反复试验找到解决方案。并用你的头。我什至不明白这里的问题描述。
-
我会先计算
remainder。然后从n中减去remainder并除以s.length。这样您就可以得到准确的整数商,而无需Math.round或Math.floor。
标签: javascript algorithm