Cho một tập các từ, chúng ta cần tìm các từ đảo chữ và hiển thị từng danh mục một mình bằng thuật toán tốt nhất.Thuật toán để nhóm các từ đảo chữ cái
đầu vào:
man car kile arc none like
đầu ra:
man
car arc
kile like
none
Giải pháp tốt nhất Tôi đang phát triển hiện đang dựa trên một Hashtable, nhưng tôi đang suy nghĩ về phương trình để chuyển đổi từ đảo chữ vào giá trị số nguyên.
Ví dụ: man => 'm' + 'a' + 'n' nhưng điều này sẽ không cung cấp giá trị duy nhất.
Bất kỳ đề xuất nào?
Xem đoạn mã sau trong C#:
string line = Console.ReadLine();
string []words=line.Split(' ');
int[] numbers = GetUniqueInts(words);
for (int i = 0; i < words.Length; i++)
{
if (table.ContainsKey(numbers[i]))
{
table[numbers[i]] = table[numbers[i]].Append(words[i]);
}
else
{
table.Add(numbers[i],new StringBuilder(words[i]));
}
}
Vấn đề là làm thế nào để phát triển GetUniqueInts(string [])
phương pháp.
Vì vậy, bạn muốn hàm băm trả về cùng một giá trị băm cho các kết hợp của cùng một chữ cái trong các đơn đặt hàng khác nhau, với băm duy nhất cho mỗi kết hợp chữ cái (không khớp sai)? – Sparr