2017-01-21 4 views
-6

ケーキは嘘ではありません!

ラムダ司令官ラムダは、ラムプチョの終末装置の最初のテストを完了し、バニー・リヴェリオンの6人の主要メンバーを捕まえ、テトリスで個人的な最高得点を打ちました。祝うために、彼女はみんなのためにケーキを注文しました。しかし、ミニオン間の競争は激しく、誰もが同じくらいの大きさのケーキをカットしなければ、大きな問題になるでしょう。Google foobarケーキは嘘ではありません

ケーキは丸みを帯びており、縁の周りの円でM & Msで装飾されています。しかし、残りのケーキは統一されていますが、M & Mではありません。複数の色があり、すべてのミニオンはM &という同じシーケンスを取得しなければなりません。ラムダ司令官は無駄を嫌がり、あなたがケーキ全体を提供できることを確認したい。

ケーキをカットするのに役立つように、ケーキ上のM & Msの色のシーケンスを文字列に変えました。aとzの間の可能な各文字は固有の色に対応し、 M & Msは時計回りに表示されます(装飾はケーキの外縁を囲む円を形成します)。

M(& Ms)のシーケンスを表す200文字未満の空ではない文字列を指定すると、ケーキから切り取ることのできる最大の部分数を返すanswer(s)という関数を記述します。残り物。

言語

solution.java

テストケースを編集

入力、Javaソリューションを提供するためにsolution.py
を編集し、Pythonのソリューションを提供する:

(string) s = "abccbaabccba" 

出力:

(int) 2 

入力:

(string) s = "abcabcabcabc" 

出力:

(int) 4 

誰もがこれを解決するためのアイデアを持っていますか? これは私の答えですが、6つのテストケースで失敗しました。

public class Answer { 
    public static int answer(String s) { 
     int split = 1; 
     char c = s.charAt(0); 
     for (int i = 1; i < s.length() - 1; i++) { 
      if (c == s.charAt(i)) { 
       if(s.charAt(i)!=s.charAt(i+1)){ 
        split++; 
       } 
      } 
     } 
     return split; 
    } 
} 

Full Image

+0

この最初の挑戦を試みることができることを望みます。 – nullpointer

+0

@nullpointerが追加されました –

+0

失敗したテストケースは分かりますか?あなたのソリューションの背後にある理由は何ですか?たぶんあなたはそれを解決に加えるべきです –

答えて

1

私は、これは迅速な作業を最適化されていない解決策だと思います。あなたは基本的にあなたがn個の部分を持つことができると仮定します。あなたが戻ってきたら、もしあなたがn-1の部分を持つことができるとすれば、あなたはそうするでしょう。

int result = -1; 
    int len = s.length(); 
    for(int i = len; i > 0; i--){   
     int n = len/i; 
     if(n * i == len){ 
      boolean valid = true; 
      String part = s.substring(0,n); 
      for(int j = 1; j < i; j++){ 

       if(!s.substring(j*n,j*n+n).equals(part)){ 
        valid = false; 
        break; 
       } 

      } 
      if(valid){ 
       result = i; 
       break; 
      } 

     } 


    } 
+0

私はそれが全く最適化されていないと言いました。 –

+0

これは合格したすべてのテストケースを処理しています!素晴らしい解決策 –

+0

それは素晴らしい解決策ではありません。しかし、あなたがそのチャレンジサイトにアクセスする方法を知っている場合、共有してください。 –

2

はちょっと私は、テキストではなく画像としてコードを共有してください再び

def answer(s): 
    return max([s.count(s[:x]) for x in xrange(len(s)) if s[:x]*s.count(s[:x]) == s]) 
関連する問題