簡體   English   中英

如何檢查字典是否包含字符串中的字母

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM