我可以将给定的单词(String)表示为数字吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我可以将给定的单词(String)表示为数字吗?相关的知识,希望对你有一定的参考价值。

假设我有一个单词列表,例如

var words = new [] {"bob", "alice", "john"};

有没有办法将每个单词表示为数字,以便可以使用这些数字对单词进行排序。

我认为可以使用的一个用例是使用Counting Sort来排序单词列表。我再次感兴趣的是,这是否完全不是因为它可能不是排序单词列表的最有效方式。

请注意,这不是关于哈希码或不同的排序算法。我很想知道字符串是否可以表示为数字。

答案

您可以使用字典而不是数组。

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();
    }
}

注意:对于大多数开发人员来说,使用集合替代数组更好更容易。

另一答案

我不明白下来的选票但嘿,这是我到目前为止所提出的:

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" };
  • 420901224533 //鲍勃
  • -9223372036854775808 // alice
  • 29835458486206476 //约翰

尽管溢出输出看起来排序给我,我需要改进它并正确测试它,但至少它是一个开始。

以上是关于我可以将给定的单词(String)表示为数字吗?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Sentiwordnet 3.0

切换语句将单词转换为数字? C ++

将语音识别限制为字母数字单词

c_cpp 给定两个表示为字符串的数字,将数字作为字符串返回乘法。注意:数字可以任意大

摩斯密码可以用数字或者汉字来翻译成密文吗?怎么试了只有字母都可以?

以指数形式表示数字