2017-09-10 1 views
0

J'ai essayé d'écrire la logique pour inverser chaque mot dans une chaîne avec seule boucle mais je ne l'ai pas fait fonctionner. Pouvez-vous s'il vous plaît fournir la logique pour inverser chaque mot dans une chaîne en utilisant une seule boucle et sans utiliser la fonction inverse.C# Renverser des mots dans une chaîne en utilisant une seule boucle sans utiliser la fonction inverse et la pile

Entrée:

Bienvenue dans le monde

Sortie:

emocleW ot EHT EDNOM

Ma logique avec deux boucles:

class Program 
    { 
     static void Main(string[] args) 
     { 
      string input = string.Empty; 
      input = Console.ReadLine(); 
      string[] strarr=input.Split(' '); 
      StringBuilder sb = new StringBuilder(); 
      foreach (string str in strarr) 
      { 
       sb.Append(fnReverse(str)); 
       sb.Append(' '); 
      } 
      Console.WriteLine(sb); 
      Console.Read(); 
     } 
     public static string fnReverse(string str) 
     { 
      string result = string.Empty; 
      for (int i = str.Length-1; i >= 0; i--) 
       result += str[i]; 
      return result; 
     } 
    } 
+0

Pourquoi passez-vous tout simplement pas la chaîne d'entrée à votre fonction fnReverse il devrait fonctionner – Winnie

Répondre

0
string input = Console.ReadLine(); 
      string result = ""; 
      string tmp = ""; 
      for (int i = input.Length - 1; i >= 0; i--) 
      { 
       if (input[i] == ' ') 
       { 
        result = tmp + " " + result; 
        tmp = ""; 
       } 
       else 
        tmp += input[i]; 
      } 
      result = tmp + " " + result; 
      Console.WriteLine(result); 

Voici le DEMO

+0

Merci pour votre réponse, mais si je considère sur tout le programme, je devrais utiliser une seule boucle, mais dans mon code, j'ai utilisé 2 boucles. –

+0

pouvez-vous me dire ce que sont ces deux boucles? Je ne comprends pas. Il n'y a qu'une seule boucle pour inverser la chaîne –

+0

@AshkanMobayenKhiabani Je pense qu'il parle du 'foreach' qui boucle chaque mot. – Guilherme

1
string strIn = "Welcome to the world"; 
    string strTmp = ""; 
    string strOut = ""; 

    for (int i=strIn.Length-1; i>-1; i--) 
    { 
     if (strIn[i] == ' ') 
     { 
      strOut = strTmp + " " + strOut; 
      strTmp = ""; 
     } 
     else 
     { 
      strTmp += strIn[i]; 
     } 
    } 
    strOut = strTmp + " " + strOut; 

donne le résultat "emocleW ot EHT EDNOM"

+0

cela fonctionne pour moi Merci –

+0

c'est exactement la même que ma réponse –

+0

@AshkanMobayenKhiabani Il semble être le même que le vôtre, même si cela semble avoir été posté avant le vôtre a été édité pour utiliser cette méthode. Je dirais que vous êtes tous les deux arrivés à la même réponse indépendamment. – YowE3K