2016-09-20 21 views
-2

私は少なくとも「n」回繰り返す必要がある文字列を持っています。次に、 'n'の文字数に対して文字 'a'の出現を数える必要がある たとえば、 文字列 - 'aab' n - 10 文字列 'aab'を繰り返して総計が少なくとも等しい「n」をして、私は「」
の数を見つける必要があり、ここで質問https://www.hackerrank.com/challenges/repeated-string繰り返し文字列で数を見つける

public static void main(String[] args) { 
    Scanner in = new Scanner(System.in); 
    String s = in.next(); 
    long n = in.nextLong(); 
    long count = 0; 
    String test = ""; 
    for(long i =0;i <= n; i++) 
    { 
     test = test.concat(s); 
    } 

    long len = test.length(); 
    for (int i = 0; i < len; i++) 
    { 
     if(i < n) 
      { 
       if((int)test.charAt(i) == 97) 
       { 
        count ++; 
       } 

      } 
     else 
      { 
       break; 
      } 
    } 
    System.out.println(count); 
} 

入力が小さい場合には、この作品をご覧ください。次のケースでは、タイムアウトのためにTerminatedというエラーが出されます。 文字列 - 'a' n - 10000000000000

誰かが私を助けることができますか?事前に感謝します

+0

である私は、 'test'が答えを得るために必要であるが、ちょうどので、あなたが知っている、あなたがループ内で連結したものを使用しないでくださいとは思いません。信じられないほど高価で遅いです。代わりに、['StringBuilder'](https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html)を使用してください。 – 4castle

+0

stringが 'a'でnが100000000000の場合の第2のテストケースでは失敗します。 – chan

+0

タイムアウトはおそらくループ内での遅い連結のためです。 – 4castle

答えて

1

ちょうど最初の文字列を使用し、nで乗算してください。

+0

https://www.hackerrank.com/challenges/repeated-stringここに問題を見てください – chan

+2

私はハッカーのポイントはあなたが他の人にあなたの質問を晴らすためだとは思わない。あなたはこれを自分自身で考え出すことを検討すべきです。 – blue

+0

@chanこれを質問に含めるとともに、「n」は繰り返し数ではなく文字数を表すことを明確にしてください。 – 4castle

0

は、次の手順に従います。

  1. は、文字列の長さ(len)を検索します。

  2. s =(INT)(N/LEN)とremの値を求める:[Egが "ABA" は、長さ3が有する] = N%LEN

  3. aの数が元で発生して下さい文字列、例にk .Accordingを言う、それは2 [「ABA」の2回] i=0からi<remに文字列を超える

  4. 反復であり、aが発生する回数を見つける、pを言います。

  5. あなたの答えはk*s + p

関連する問題