1

わかりました、それで、私の友人が、String.Reverse を使用せずに再利用できる文字列リバース メソッドで彼を助けるように私に頼みました (これは彼の宿題です)。今、私は、以下のコードです。できます。実に見事。明らかにそれを見ると、文字列が大きいほど、作業にかかる時間が長くなることがわかります。しかし、私の質問はなぜそれが機能するのですか? プログラミングは試行錯誤の連続で、実際のコーディングより疑似コーディングの方がうまくいきました(笑)。

誰かが私にどのように正確に逆= ch +逆を説明できますか? は働いている?何が逆になっているのかわかりません:/

class Program
{

    static void Reverse(string x)
    {

        string text = x;
        string reverse = string.Empty;
        foreach (char ch in text)
        {

            reverse = ch + reverse;
            // this shows the building of the new string. 
            // Console.WriteLine(reverse);
        }

        Console.WriteLine(reverse);        

    }
    static void Main(string[] args)
    {

        string comingin;
        Console.WriteLine("Write something");
        comingin = Console.ReadLine();
       Reverse(comingin);

        // pause
        Console.ReadLine();
    }



}
4

5 に答える 5

2

渡された文字列が「hello」の場合、ループは次のようになります。

reverse= 'h' +string.Empty

reverse= 'e' + 'h'

reverse= 'l' + 'えっ'

に等しくなるまで

オレ

于 2013-06-06T12:43:21.797 に答える
2

文字列がMy Stringの場合:

Pass 1, reverse = 'M'
Pass 2, reverse = 'yM'
Pass 3, reverse = ' yM'

あなたは各キャラクターを取り、「そのキャラクターと、それ以降に私が以前に持っていたものにタックを加える」と言っています.

于 2013-06-06T12:43:26.217 に答える
1

入り口の文字列が「abc」だと想像してください。その後、文字が 1 つずつ取得され、新しい文字列の先頭に追加されることがわかります。

  1. リバース = "", ch='a' ==> リバース (ch+リバース) = "a"
  2. reverse= "a", ch='b' ==> reverse (ch+reverse) = b+a = "ba"
  3. reverse= "ba", ch='c' ==> 逆 (ch+reverse) = c+ba = "cba"
于 2013-06-06T12:45:51.807 に答える