こんにちは、私は辞書に文字列を格納している小さな関数を持っています。文字列には小文字と大文字を同時に入れることができ、すべての文字を小文字または大文字のいずれかに格納したかったのです。基本的に私は辞書に 'T'と 't'を同じキーとして扱いたい。以下は私のコードです。小文字のC#文字列
public bool CheckCharOddCount(string str1)
{
bool isOdd = false;
Dictionary<char, int> dt = new Dictionary<char, int>();
// Dictionary is case sensitive so 'T' and 't' are treated as different keys.
str1 = str1.ToLower(); # One way
foreach (char c in str1)
{
c = char.ToLower(c); # Another way
if (dt.ContainsKey(c))
dt[c]++;
else
dt.Add(c, 1);
}
foreach (var item in dt)
{
if (item.Value % 2 == 1)
{
if (isOdd)
return false;
isOdd = true;
}
}
return true;
}
は今、私は1つの方法として、小文字にまたはループのために内部の各文字を小文字に入力文字列を変換するように、ここでは物事のカップルを実行しようとしました。
文字列の下側の最初の方法は問題ありませんが、不変の文字列オブジェクトを変更していますので効率的な方法ではありません。私の2番目の方法は働いていますが、大きな文字列の場合に効率的かどうかはわかりません。
私の辞書の大文字小文字を区別しないようにするか、最も低い効率で文字列を小文字にすることについてのコメントはありますか?
S今すぐ、そしてToLowerを使う前に、http://haacked.com/archive/2012/07/05/turkish-i-problem-and-why-you-should-care.aspx/とhttpsを読んでください。 ://blog.codinghorror.com/whats-wrong-with-turkey/ –
あなたは 'c = char.ToLower(c);'を実行する必要があります。 – juharr