我想创建一种算法,把字符串中的字母变成int,假设字符串是ABCD,输出是1234,这将确保相同的消息每次都是相同的,我的想法是创建一个字典,以char作为键,int作为值,然后它会循环通过字符串,在这个循环中,它会循环通过字典中的所有内容,类似这样
for(int i = 0; i < SeedS.Length; i++) {
for(int j = 0; j < AlphabetDictionary.Count; j++) {
//Do something
}
}
然后我的想法是检查种子中的内容(索引为i)是否等于字典中的关键字(索引为j),然后将该位置的值赋给输出,我试着在网上搜索如何做到这一点,但我没有找到任何可以帮助,(我可以使用数组或列表,但我认为这只是懒惰和不太好,如果我可以使用字典)我使用了1-2次字典,我不知道如何做这样的事情,我想到了所有其他的,但我停在这一点,因为我不知道现在该做什么。我想要任何帮助提款机,因为我在过去的一个星期里一直在研究这个“算法”,我猜
PS:我也试着看Unity YT教程和阅读Unity文档,但我什么也没有发现。
您可以使用以下内容:
// Create your dictionary here.
var dictionary = new Dictionary<char, int>();
// The string that will be converted.
string str = "Hello";
foreach (char character in str)
{
if (dictionary.ContainsKey(character))
{
int value = dictionary[character];
// Use your value here.
}
}
词典提供了通过键在大约O(1)时间内找到值的函数。对它们进行迭代会花费更长的时间,因此会破坏使用字典的目的。
您可以使用dictionary
并使用两个字典来来回操作
private Dictionary<int, char> indexToChar;
private Dictionary<char, int> charToIndex;
public string GetString(IReadonlyList<int> indices)
{
var sb = new StringBuilder();
foreach(var id = indices)
{
if(indexToChar.TryGetValue(id, out var c)
{
sb.Append(c);
}
}
return sb.ToString();
}
public IReadonlyList<int> GetIndices(string input)
{
var ids = new List<int>();
for(var i = 0; i < input.Length; i++)
{
if(charToIndex.TryGetValue(input[i], out var id)
{
ids.Add(id);
}
}
return ids;
}