hackerrank中的java重复字符串问题获取时间限制问题
我正在解决重复字符串hackerrank问题。但是所有的测试用例都没有运行,可能是我的逻辑不正确。问题是这样的
下面给出了我的代码,它由repeatedString和countingA函数组成,这些函数没有任何变量 i、 a,和无穷大的字符串
import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.regex.*;
public class Solution {
// Complete the repeatedString function below.
static long repeatedString(String s, long n) {
long i=1;
String infinityString="";
while(s.length()*i<=n)
{
infinityString+=s;
i++;
}
if(s.length()%infinityString.length()==0){
return countingA(infinityString);
}else{
infinityString+=s.substring(0,(s.length()%infinityString.length())-1);
return countingA(infinityString);
}
}
public static long countingA(String infinity)
{
long a=0;
for(int i=0;i<infinity.length();i++)
{
if(infinity.charAt(i)=='a')
{
a++;
}
}
return a;
}
private static final Scanner scanner = new Scanner(System.in);
public static void main(String[] args) throws IOException {
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));
String s = scanner.nextLine();
long n = scanner.nextLong();
scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");
long result = repeatedString(s, n);
bufferedWriter.write(String.valueOf(result));
bufferedWriter.newLine();
bufferedWriter.close();
scanner.close();
}
}
# 1 楼答案
以下代码甚至在普通代码中也太慢,因为字符串串联分配了更大的字符串
还有人想:
我们可以看到:字符串不能容纳长n字符
但是,您不需要重复的字符串:
# 2 楼答案
也许试试这个
# 3 楼答案
也许你丢失的情况是^ {}的条件,然后需要计算额外的A。我也在C++中解决了这个问题,并使用了下面的逻辑
s
s
是总计数n
的倍数时的条件,因此您只需要将s
中的a的数量乘以n/s
的结果李>n/s
中存在的a的总数李>希望这有帮助