java - hackerrank 中的重复字符串问题获取时间限制问题

标签 java

我正在解决重复字符串 hackerrank 问题。但是所有的测试用例都没有运行可能是我的逻辑不正确。问题是这样的

repeated string problem

下面给出了我的代码,其中包含没有变量的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();
    }
}

最佳答案

也许可以试试这个,

static long countA(String s, long n) {
    long totalCount = 0;
    long aCount = 0;
    long times = n / s.length();

    for(int i = 0; i < s.length(); i++) {    
        if(s.charAt(i) == 'a')    
            aCount++;    
    }
    totalCount =  times * aCount;
    aCount = 0;
    if(n%s.length() != 0) {
        for(int i=0;i<n - (times * s.length());i++)
            aCount++;
    }
    return totalCount + aCount;
}

关于java - hackerrank 中的重复字符串问题获取时间限制问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59854635/

相关文章:

java - Windows Server 2008 R2 的 Tomcat 7.0 HTTP post 请求 utf-8 问题

java - 字符串索引越界异常 : String index out of range 0

java - Robot.createScreenCapture 正在改变颜色

java - 在 android 的 AsyncTask 中创建额外的线程并使用 ExecutorService 更新 UI,我做错了吗?

Java FX 多 Windows 应用程序

java - 使用假列表类

java - 这是 jackson-datatype-jsr310 反序列化器中的错误吗?

java - 包含汉字的字符串转ASCII

java - 如何实现一个可以依次执行或随时停止的作业列表?

java - 两个不同的对象打印相同的属性值