2009-04-04 13 views
2

私は申し訳ありませんが、長さは建設時に計算されていることを知らなかった!私はC#(.NET)で文字列の長さをそれに応じて比較する関数はありますか?

int Al = A.length; 
int Bl = B.length; 

をして、それを比較した場合

私は200文字の長い文字列A、5文字の長い文字列B を得た - すべては罰金だが、私は にこの数百万回を行う場合は、何かを計算し、それは私が必要とするものには高価すぎる。

2つの文字列を比較して、もう一方の文字列が他の文字列とほとんど同じであることがわかるような機能があれば、もっと簡単できれいな方法です。文字列Bが列Aが機能するためにtrueを返すこととして(文字)少なくとも同じ長さでなければならない>

はい、 私は関数がいずれかを持っていないことを知っている - (compare_string_lengths(stringA、列B)のような 何か。アイデアその文字列は短いですが、二つの文字列の長さを並列にカウントされます場合は、1つは他を超えたときに、関数が知っている「答え」。任意のヒントについて

感謝。

+0

問題を削除することはできません。欠陥のある前提はそれを非官能的にするためです。 – Brian

+0

この部分はhttp://stackoverflow.com/questions/717801/is-string-length-in-c-net-instant-variableですか? –

+0

@ブライアン:なぜ削除しますか?これは、同じ問題を抱えている人にとって役に立ちます。 –

答えて

9

あなただけが必要な場合に文字列の長さが異なるかどうかを知るために(または比較する前に長さが等しいかどうかをチェックしたい場合)、私はあなたがLengthプロパティ。文字列からの長さの取得は、O(1)操作です。

文字列を実際に比較するには、それぞれの文字を見る必要があり、O(n)操作になります。

編集:

物事があまりにもゆっくり実行している場合、あなたはプロファイラで見てしようとする必要があり、最も遅い部分は何ですか?おそらくそれは時間がかかるあなたの弦の構成ですか?

1

2本の弦の長さを比較するよりも安価なものはほとんどありません。

あなたは次のように、ハッシュテーブルを使用し、文字列のリスト内の文字列を検索する場合:

var x = new System.Collections.Generic.Dictionary<string, bool>(); 
    x.Add("string", true); 
    if (x.ContainsKey("string")) 
     Console.WriteLine("Found string."); 

これは驚くほど速いです。

関連する問題