Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Cách đảo chuỗi theo từ thay vì theo ký tự bằng C#

Tạo phương thức reverseWords nhận mảng char, với mỗi ký tự cho đến khi gặp khoảng trắng thì đảo từ đó. Bước cuối đảo toàn bộ chuỗi từ 0 đến n-1. Bước 1: "This is my book" thành "koob ym si siht". Bước 2: đảo các từ thành "book my is This".

Độ phức tạp thời gian - O(N)

Ví dụ

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();
        }
    }
}

Kết quả

book my is This

Giải thích: Đảo ngược thứ tự từ trong chuỗi in-place. Bước 1: đảo từng từ riêng lẻ. Bước 2: đảo toàn bộ mảng. Kết quả: thứ tự từ đảo ngược, ký tự trong từ giữ nguyên. Xử lý khoảng trắng thừa ở đầu/cuối.