假设我有一个单词列表,例如
var words = new [] {"bob", "alice", "john"};
有没有办法将每个单词表示为数字,以便可以使用这些数字对单词进行排序。
我认为可以使用的一个用例是使用 Counting Sort 对单词列表进行排序。我再次感兴趣的是,这是否完全不是因为它可能不是排序单词列表的最有效方式。
请注意,这不是关于哈希码或不同的排序算法。我很想知道字符串是否可以表示为数字。
答案 0 :(得分:0)
您可以使用字典而不是数组。
public class Program
{
static void Main(string[] args)
{
IDictionary<int, string> words = new Dictionary<int, string>();
words.Add(0, "bob");
words.Add(1, "alice");
words.Add(2, "john");
foreach (KeyValuePair<int, string> word in words.OrderBy(w => w.Key))
{
Console.WriteLine(word.Value);
}
Console.ReadLine();
}
}
注意:对于大多数开发人员来说,使用集合代替数组更好一些。
答案 1 :(得分:0)
我不理解下来的选票,但是这是我到目前为止所提出的:
private int _alphabetLength = char.MaxValue - char.MinValue;
private BigInteger Convert(string data)
{
var value = new BigInteger();
var startPoint = data.Length - 1;
for (int i = data.Length - 1; i >= 0; i--)
{
var character = data[i];
var charNumericValue = character;
var exponentialWeight = startPoint - i;
var weightedValue = new BigInteger(charNumericValue * Math.Pow(_alphabetLength, exponentialWeight));
value += weightedValue;
}
return value;
}
使用以上内容转换以下内容:
var words = new [] {"bob", "alice", "john" };
尽管溢出输出看起来像是排序给我,但我需要改进它并正确测试它,但至少它是一个开始。