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

Xóa ký tự trùng lặp khỏi chuỗi trong C#

Sử dụng HashSet<char> để loại bỏ các ký tự trùng lặp trong chuỗi. HashSet chỉ lưu trữ các giá trị duy nhất, tự động loại bỏ trùng lặp khi khởi tạo từ chuỗi.

Ví dụ cơ bản

string str = "ppqqrr";
var uniqueChars = new HashSet(str);
// uniqueChars chứa: 'p', 'q', 'r'

Mã nguồn hoàn chỉnh

using System;
using System.Linq;
using System.Collections.Generic;

namespace Demo
{
    class Program
    {
        static void Main(string[] args)
        {
            string str = "ppqqrr";
            Console.WriteLine("Chuỗi gốc: " + str);
            
            var res = new HashSet(str);
            Console.Write("Chuỗi mới sau khi xóa trùng: ");
            foreach (char c in res)
                Console.Write(c);
        }
    }
}

Kết quả

Chuỗi gốc: ppqqrr
Chuỗi mới sau khi xóa trùng: pqr

Lưu ý về thứ tự

HashSet không bảo toàn thứ tự xuất hiện của ký tự. Nếu cần giữ thứ tự, dùng LINQ:

// Giữ thứ tự xuất hiện đầu tiên
string result = new string(str.Distinct().ToArray());
// Hoặc
string result = string.Concat(str.Distinct());

So sánh các cách

CáchThứ tựHiệu suấtPhức tạp
new HashSet(str)Không bảo toànO(n)Đơn giản
str.Distinct()Bảo toànO(n)LINQ
Loop thủ công + HashSetBảo toànO(n)Kiểm soát hoàn toàn

Ví dụ giữ thứ tự

string str = "ppqqrr";
string unique = string.Concat(str.Distinct());
Console.WriteLine(unique);  // "pqr" (giữ thứ tự p→q→r)