Đối với chuỗi dài ký tự có kích thước byte (không phải cho ký tự rộng hoặc mã hóa khác), tôi sẽ sử dụng bảng tra cứu, một bit cho mỗi ký tự (32 byte cho bảng 256 bit). Lặp qua chuỗi của bạn, chỉ các ký tự đầu ra không có bit được bật, sau đó bật bit cho ký tự đó.
string removedupes(string s)
{
string t;
byte[] found = new byte[256];
foreach(char c in s)
{
if(!found[c]) {
t.Append(c);
found[c]=1;
}
}
return t;
}
Tôi không tốt với C#, vì vậy tôi không biết đúng cách để sử dụng bitfield thay vì mảng byte.
Nếu bạn biết rằng các chuỗi của bạn sẽ rất ngắn, thì các cách tiếp cận khác sẽ cung cấp mức sử dụng và/hoặc tốc độ bộ nhớ tốt hơn.
Tiêu đề bị đặt tên sai - bạn muốn xóa các ký tự trùng lặp khỏi chuỗi. –
Bạn có thể đăng những gì bạn đã thử cho đến nay không? – SquareCog
Giải pháp LINQ nên thú vị. –