1

これは非常に基本的な質問かもしれません。文字列置換アルゴリズムと同様に機能するコードを記述する必要があります。

static string stringReplace(string s, string stringOld, string stringNew)
    {
        string newWord = "";
        int oldMax = stringOld.Length;
        int index = 0;
        for (int i = 0; i < s.Length; i++)
        {
            if (index != oldMax && s[i] == stringOld[index])
            {
                if (stringOld[index] < stringNew[index])
                {
                    newWord = newWord + stringNew[index];
                    index++;
                }
                else
                {
                    newWord = newWord + stringNew[index];
                }
            }
            else
            {
                newWord = newWord + s[i];
            }
        }
        return newWord;
    }

午前 3 時なので、上記のコードにはバグがある可能性があります。新しい単語が古い単語より短いと、うまくいきません。長い場合も同様です。index 変数が stringOld と stringNew の両方で等しい場合、スワップが実行されます。私は思う... "use string.Replace()を投稿しないでください、私はそのアルゴリズムを自分で書かなければなりません...

4

1 に答える 1

1

コードで何をしようとしているのかわかりませんが、問題は小さなものではありません。自分がやろうとしていることを論理的に考えてください。これは 2 段階のプロセスです。

  1. s で stringOld の開始インデックスを見つけます。
  2. 見つかった場合は、stringOld を stringNew に置き換えます。

ステップ 1: かなり複雑な (そして洗練された) 効率的な文字列検索アルゴリズムが多数あります。オンラインで検索するか、Cormen、Leiserson、Rivest & Stein による人気の高い「Introduction to Algorithms」を参照できますが、単純なアプローチには 2 つのループが含まれ、ものすごく単純。その本(およびオンライン)にも記載されています。

ステップ 2: index で一致が見つかった場合i0文字を to から toi-1にコピーsnewWord、続いてindex から始まるnewString残りの文字をコピーするだけです。si + oldString.Length

于 2013-10-15T01:16:38.087 に答える