チャレンジ
きっとあなたはタイトルを読んで、あなたの担当者を養成するためにやって来て、その子供たちのことを考えていましたが、もう一度考えてください!別の文字列の出現を数えるには、最短のコードで互いに挑戦し合う必要があります。たとえば、次の入力があるとします。
aaaabbbbsssffhd
文字列として、文字列
s
出力する必要があります
3
ルール
あなたが笑顔で「ねえ、私は----を使います」と言う直前にこれを読んでください:
- 外部ライブラリや言語のAPIを使用しないでください。手動で実装する必要があります。つまり、言語の組み込み関数またはメソッドを使用して出現回数をカウントすることはできません。
- ファイルI / Oなし
- サーバー、ウェブサイトなどに接続しない
- `aba`の場合、` aba`で始まり、最後の3文字を読んだ場合も `aba`であれば、1つだけカウントします*
@ProgramFOXに感謝します(最後のルール)!
* ヒント:発生をカウントするときに、カウントしたものを削除して、このルールに従わないようにすることができます
最後の2つのルールはルールベンダーのためだけのものだと思います!
受賞基準
前述のように、勝者は使用されるバイト数が少ないコードです。当選者は5日後に発表されます(2014年6月15日)。
私の小さな答え
ここでは、それは私のことを前提としてC ++の答え、だli
変数がで出現箇所を確認するための文字列を保持しており、l
中を探すための文字列ですf
。
未ゴルフ
int c = 0;
while (li.find(lf) != string::npos)
{
int p = li.find(lf);
int l = p + lf.length() - 1;
for (p = p; p <= l; p++)
{
li[p] = static_cast<char>(8);
}
++c;
}
もちろん、を使用std::string
するには、文字列ヘッダーファイルをインクルードする必要があります。
ゴルフ
int c=0;while(li.find(lf)!=string::npos){int p=li.find(lf);int l=p+lf.length()-1;for(p=p;p<=l;p++){li[p]=static_cast<char>(8);}++c;}
結果
変数c
は、文字列が見つかった回数の値になります
楽しい!
勝者
長い待機の後、@ Dennisの回答はGolfScriptで記述された3バイトのみで勝ちます
s
マッチングよりも長い文字列を処理する必要がありますか?そうでない場合:私は、5文字のJ・ソリューションを持っている:+/a=b
ababa
andの場合、aba
出力する1
か、それとも2
?3番目a
は、1 番目の終わりとaba
2番目の始まりの両方aba
です。