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

Chương trình C# đảo ngược chuỗi (String)

Chuỗi (string) trong C# là bất biến (immutable) — không thể sửa đổi trực tiếp. Cách phổ biến: duyệt ngược và xây chuỗi mới, hoặc dùng LINQ/Array.Reverse.

Cách 1: Vòng lặp while (giải thuật cơ bản)

using System;

class Demo {
    static void Main() {
        string myStr = "Tom";
        string rev = "";
        
        Console.WriteLine("Chuỗi gốc: {0}", myStr);
        
        int len = myStr.Length - 1;
        while (len >= 0) {
            rev = rev + myStr[len]; // Nối ký tự từ cuối về đầu
            len--;
        }
        
        Console.WriteLine("Chuỗi đảo ngược: {0}", rev);
        Console.ReadLine();
    }
}

Kết quả

Chuỗi gốc: Tom
Chuỗi đảo ngược: moT

Cách 2: Dùng LINQ (ngắn gọn)

using System.Linq;

string str = "Tom";
string reversed = new string(str.Reverse().ToArray());
Console.WriteLine(reversed); // moT

Cách 3: Dùng Array.Reverse (hiệu năng tốt)

char[] chars = str.ToCharArray();
Array.Reverse(chars);
string reversed = new string(chars);

Cách 4: StringBuilder (hiệu năng tốt cho chuỗi dài/lặp nhiều)

using System.Text;

var sb = new StringBuilder();
for (int i = str.Length - 1; i >= 0; i--) {
    sb.Append(str[i]);
}
string reversed = sb.ToString();

So sánh hiệu năng

Phương phápĐộ phức tạpCấp phát bộ nhớKhuyên dùng
Vòng lặp + +=O(n²)Nhiều (string bất biến)Không (chỉ học tập)
StringBuilderO(n)1 lầnChuỗi dài, lặp nhiều
Array.ReverseO(n)1 mảng char + 1 stringChung dùng tốt
LINQ Reverse()O(n)Nhiều đối tượng trung gianCode ngắn, không quan trọng perf

Lưu ý Unicode

Các cách trên đảo ngược theo char (UTF-16 code unit). Với emoji/ký tự surrogate pair (vd: "👨‍👩‍👧‍👦"), kết quả sẽ sai. Cần dùng StringInfo hoặc Rune (.NET Core 3.0+).