2012-03-14 3 views
0

2つの文字列があり、それらを比較したいと思います。目的関数-cの文字列 "overlap"または "distance"を求める

編集明確にするために、文字列に共通する最も長い連続単語を見つけたいと思います。例えば

文字列: 「現代のための土地収用:毎日MTG:マジック:ザ・ギャザリング」「予算にビル:近代のために土地収用」 と

は4を返します、両方の文字列が含まれているので、 "4つの言葉を含む"現代のための "著名なドメイン"。

しかし、単に共通の単語の数を見つけた場合は、そのメソッド、その後高速であるが、許容できるだろう...私はどちらか行うための最善の方法はよく分からない...

+0

あなたは共通のものを具体的にする必要があります。彼らは共通の文字列を探していると言いますが、どのくらいの時間が必要ですか? 2文字?三?出現数または連続した文字の総数を共通に計算する必要がありますか?質問は「距離」の測定値が何であるかを知らなくても答えが広がる... –

+0

私は文字列のApple Documentationを読んでいます。strings.httpsを検索して比較する方法はたくさんあります://developer.apple.com/ライブラリ/ ios /#documentation/cocoa/conceptual/strings/introStrings.html#// apple_ref/doc/uid/10000035-SW1 –

+0

[Wikipediaでの最も長い共通部分文字列の問題]を見てください(http://en.wikipedia .org/wiki/Longest_common_substring_problem)。 – omz

答えて

1

NSString Class Reference上に読み、詳細はNSArray Class Referenceですが、ここにアプローチがあります。

スペースや文字ではないものを削除するためにNSString方法

– stringByTrimmingCharactersInSet: 

を使用してください。次に、各要素が単語であるNSArrayに文字列を変換するには、

– componentsSeparatedByCharactersInSet: 

を使用します。比較したい2つの文字列のそれぞれに対してこれを行います。次いでつのアレイの要素をループと二番目の配列はまた、その単語が含まれているかどうかを確認するためにNSArray方法

– containsObject: 

を使用します。それを試してください。特定のポイントで動かない場合は、コードを投稿してヘルプをもう一度お願いします。がんばろう。

+0

ええ、それは私がやっていることです...私はちょうど早く、よりエレガントな方法があると思っていた。または、NSStringの既存のメソッドをいくつか用意しておいてください。 – itgiawa

+0

@itgiawa次に、あなたの投稿を読む人の時間を無駄にしないように、将来的にはもっと具体的な質問を投稿することができます。 – PengOne

関連する問題