我在Hackerrank上执行了repeaterString问题,并且我的代码无法解决所有情况。我的代码似乎正确,但是在使用大整数
时会超时我尝试使用不同的for循环,但似乎无法弄清楚,我对编码有些陌生。我试图做一个if语句,说s等于'a'然后计数等于n,但这无助于它通过所有测试用例。我非常确定,如果您需要查看它,可以在Google搜索出repeatedStr问题。
根据我输入的代码,我希望计数等于n。
variables:
REGION: us-east-1
S3_BUCKET_NAME: my-bucket
stages:
- build
- push
- deploy
build-package:
stage: build
script:
- some code to produce a deployment package called function.zip
artifacts:
name: deployment_package
paths:
- function.zip
push-code:
stage: push
script:
- aws s3 cp function.zip s3://$S3_BUCKET_NAME/$CI_COMMIT_SHA.zip
deploy-trigger-stack:
stage: deploy
script:
- aws cloudformation deploy
--template-file stack-template.yaml
--stack-name my-stack
--region $REGION
--no-fail-on-empty-changeset
--capabilities CAPABILITY_NAMED_IAM
--parameter-overrides
ciCommitSha=$CI_COMMIT_SHA
s3Bucket=$S3_BUCKET_NAME
答案 0 :(得分:0)
我想这就是挑战:https://www.hackerrank.com/challenges/repeated-string/problem
主要问题是while
循环和for
循环。
while
循环正在检查string.length <= n
,而for
循环正在检查i < n
并增加n。
for循环将在i = n
时中断,因此在subStr.length == n
时中断。但是,while条件不会中断,因为 substr.length仍等于n
我建议将所有内容都放在一个循环中,因为while或for都是多余的(您只需要一个循环)。
// replace the while and for loop with this
let i = 0
while (subStr.length <= n) {
let element = s[i]
if (element) {
subStr += element
}
i++;
}
最后,关于如何优化此问题的另一条评论:您可以将这个问题视为除法解决方案,或者可以将给定长度的字符串输入多少次,而不是构建整个字符串列表和计数。您知道您的字符串中有X
次字母。
如果您知道可以输入字符串长度Y
的长度的a
倍,则只需执行X * Y即可获得字符串中if (element)
的数目。当然,您将不得不使用除法的其余部分,因为在长度中输入的项目数不是输入数,而是小数
我也无法添加评论,但是
element
是一个断言,用于验证{{1}}是否未定义,在JS中访问边界数组时就是这种情况。