-2

I want reverse words in a string. I am not getting proper output. Please help me.

Example

  • input: Hello world
  • output: World Hello

Code:

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Enter a string");
        string s1 = Console.ReadLine();           
        string s2 = "";
        int l = s1.Length;

        for (int i = l - 1; i >= 0; i--)
        {
            s2 = s2 + s1[i];
        } 
        for (int i = 0; i<s2.Length; i++)
        {
            if (s2[i] == ' ')
            {
                for(int j=i;j>0 && s2[j]!=' ';j--)
                   Console.Write(s2[j1]);
                   Console.Write(" ");
            }
            else if (i == s2.Length - 1)
            {
                for (int j = i+1; j > 0 && s2[j] != ' '; j--)
                    Console.Write(s2[j]);
                Console.Write(" ");
            }                   
        }
    }
} 
René Vogt
  • 43,056
  • 14
  • 77
  • 99

2 Answers2

4

Easiest appraoch would be to split the word at its boundaries and then use IEnumerable<T>.Reverse():

var words = myString.Split(' ');
var result = words.Reverse();

To combine it all into one string:

var resultString = String.Join(" ", result);

The final one-liner:

var result = String.Join(" ", myString.Split(' ').Reverse());
Raktim Biswas
  • 4,011
  • 5
  • 27
  • 32
MakePeaceGreatAgain
  • 35,491
  • 6
  • 60
  • 111
-1

Just use the built-in Linq method:

Console.WriteLine("Please input string");
string input = Console.ReadLine();
string reversed = string.Join(" " , input.Split(' ').Reverse());
MichaelThePotato
  • 1,523
  • 2
  • 10
  • 19