2017-10-04 5 views
-3

文の中の単語を逆順に並べ替える作業が必要ですが、最初の文字の場合にのみ行うことができます。例:楽しい試験です。何も残っていない状態でStringBuilderに追加

私の質問は何も残っていない間にこのループを繰り返す方法です。 すべてのヘルプは大幅にappriciatedされます:)

EDIT:nmtuahFxgeir:質問は

私は結果があるべき文「楽しい受験権利」を持っている場合、私は意味しています。私たちは、それぞれの単語の最後の文字が「NMT」の結果は、次のいずれかを実行し、「nmtuah」が得られ、それらを追加することを追加最初に取ると、あなたがsentance[i].Last()を使用する場合はそう

+2

私は要件について混乱しています。それは "これはテストですか" => "テストはこれですか"、または=> "問題はありますか?" – Fildor

+0

変数を詳しく見てみましょう(varを使うと、その中に何が入っているのかを忘れてしまいます)。あなたは、それを逆にするために各単語に必要なnothngがないときに繰り返す必要はありません。スクラブル手紙のバッチをくれた? – BugFinder

+0

要件の記述が非常に間違っています。 _「最初の手紙のためにしかできません。」_それぞれの単語の最後の文字を出力しているようですが、順方向に出力しているようです。実際に必要なのは何ですか? –

答えて

1

に、あなただけの最後を拾っていますあなたの配列の要素。

編集:更新された要件に従って、このコードを使用することができます。

  //Get the sentence array 
      var sentence = Console.ReadLine().Split(' '); 
      var rearrangedSentence = new StringBuilder(); 

      //Get the length of longest word in array 
      int loopLength = sentence.OrderBy(n => n.Length).Last().Length; 


      int x = 0; 
      // Run for the length of longest word 
      for (int i = loopLength-1; i >=0 ; i--) 
      { 
       // need to pick up an element at every run for each element. 
       for (var j = 0; j < sentence.Length; j++) 
       { 
        //Picking the position of item to be picked up 
        int val = sentence[j].Length - (x + 1); 
        // If index not out of bounds 
        if(val >= 0 && val <= sentence[j].Length) 
        { 
         // Pick the character and append to stringbuilder. 
         rearrangedSentence.Append(sentence[j][val]); 
        } 
       } 
       // Next letter should be n-1, then n-2. 
       // Increase this. Val will decrease 
       x++; 
      } 

      Console.WriteLine(rearrangedSentence.ToString()); 


      Console.ReadLine(); 
+1

[Arrays.Reverse](https://msdn.microsoft.com/en-us/library/d3877932(v=vs) .110).aspx) – Fildor

+0

@Fildorはい、これもオプションですが、質問する人はStringBuilderで修正が必要です。また、Array.Reverseの後、配列結合が必要になります。 – Amit

+0

_ "StringBuilderで修正が必要です" _ - 彼は実際に彼が望んでいることを100%知っているかどうかはわかりません。 – Fildor

関連する問題