[英]How to check if Dictionary contains letters from string
所以,我想創建某種算法,將字符串中的字母更改為 int,所以讓我們說如果字符串是 ABCD,output 將為 1234,這將確保相同的消息每次都是相同的,我的想法是創建字典,它將 char 作為鍵,int 作為值,然后它將循環遍歷字符串並在該循環內循環遍歷字典中的所有內容,就像這樣
for(int i = 0; i < SeedS.Length; i++) {
for(int j = 0; j < AlphabetDictionary.Count; j++) {
//Do something
}
}
然后我的想法是檢查 SeedS 中的內容(索引為 i)是否等於字典中的 Key(索引為 j),然后將該位置的值分配給 output,我嘗試在互聯網上搜索如何做到這一點,但我沒有找到任何可以幫助的東西,(我可以使用數組或列表,但我認為如果我可以使用字典,那只是懶惰而且不是很好)我使用字典 1-2 次,我不'不知道如何做這樣的事情,我想到了其他所有事情,但我停在這一點上,因為我不知道現在該做什么。 我需要任何幫助 atm 因為我想過去一周我正在研究這個“算法”
PS:我還嘗試查看 Unity YT 教程並閱讀 Unity 文檔,但我一無所獲。
你說你真正想要的只是一個基於字符串輸入的隨機種子。
這再簡單不過了! 如果您只需要一個對於相同的字符串輸入始終相同的“種子”,您也可以只使用string.GetHashCode();
var randomSeed = SeedS.GetHashCode();
如果您真的需要自定義 map,您可以使用Dictionary<Tk, Tv>.TryGetValue
並使用兩個字典來回 go
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;
}
否則你也可以只使用
var intValue = (int) someChar;
和
var charValue = (char) someInt;
你可以使用這樣的東西:
// 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) 時間內通過鍵查找值的功能。 迭代它們會花費更長的時間,因此會破壞使用字典的目的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.