JS:重复字符串(Hackerrank 挑战)

新手上路,请多包涵

我正在 Hackerrank 中完成以下挑战之一:

Lilah 有一串小写英文字母 s,她重复了无数次。

给定一个整数 n,找出并打印 Lilah 无限字符串的前 n 个字母中字母 a 的个数。第一行包含一个字符串 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;
}

如果有人可以看看这个并提出更好的解决方案,那就太好了。

原文由 rory-h 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 256
1 个回答
//From a website i found it.

 const as = s.split("").filter(c => c === "a").length;
        const times = parseInt(n / s.length);
        const rest = n % s.length;

        const totalAs = times * as
            + s.slice(0, rest).split("").filter(c => c === "a").length

        return totalAs;

原文由 jai 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏