Computer >> 컴퓨터 >  >> 프로그램 작성 >> C#

C#을 사용하여 문자 대신에 주어진 문자열을 단어 단위로 뒤집는 방법은 무엇입니까?

<시간/>

char 배열을 입력으로 사용하고 빈 공간에 도달하지 않을 때까지 모든 문자에 대해 단어를 반대로 하는 방법을 반대로 작성합니다. 마지막 단계에서 전체 문자열을 길이 0에서 n-1 길이로 뒤집습니다. 첫 번째 단계에서 문자열 "This is my book"은 "koob ym si siht"로 바뀝니다. 두 번째 단계가 끝나면 문자열 단어가 "book my is This"로 바뀝니다.

시간 복잡도 - O(N)

using System;
namespace ConsoleApplication{
   public class Arrays{
      static void reverse(char[] str, int start, int end){
         char temp;
         while (start <= end){
            temp = str[start];
            str[start] = str[end];
            str[end] = temp;
            start++;
            end--;
         }
      }
      public char[] reverseWords(char[] s){
         int start = 0;
         for (int end = 0; end < s.Length; end++){
            if (s[end] == ' '){
               reverse(s, start, end);
               start = end + 1;
            }
         }
         reverse(s, 0, s.Length - 1);
         return s;
      }
   }
   class Program{
      static void Main(string[] args){
         Arrays a = new Arrays();
         string s = " This is my book ";
         var res = a.reverseWords(s.ToCharArray());
         Console.WriteLine(new String(res));
         Console.ReadLine();
      }
   }
}

출력

book my is This