4

2つの文字列を入力として受け取り、変更の部分文字列範囲を含む配列を返すアルゴリズムを実装する必要があります。

たとえば、範囲は次のように定義されます

typedef struct _NSRange {
    NSUInteger location; // Where the affected substring begins
    NSUInteger length; // How long the affected substring is
} NSRange;

例:

string1 = "My cat sometimes likes to eat fish.";
string 2 = "My cat always likes to drink fresh water, and eat fish.";

変更点は次のとおりです。

  • {7,9}「時々」が{7,6}「常に」に変更されました
  • {26,0}は「真水を飲む」を追加しました

変更によってグループ化されたサブストリングを含む配列が必要です。この例では、次のようになります。

  • "私の猫 "
  • "いつも"
  • " するのが好き "
  • 「真水を飲んで」
  • " 魚をたべる。"

目標は、既存の文字列の変更を強調することです。そのため、変更に基づいてその文字列をサブ文字列に分割する必要があります。

車輪の再発明をする前に-パブリックドメインに解決策はありますか?

4

2 に答える 2

2

タスクを2つの部分に分割します。

パート1:違いを見つける。

次のコードを使用してこれを行うことができます。

NSString *string1 = @"My cat sometimes likes to eat fish.";
 NSString * string2 = @"My cat always likes to drink fresh water, and eat fish.";
NSMutableSet *set1 = [NSMutableSet setWithArray:[string1 componentsSeparatedByString:@" "]];
NSMutableSet *set2 = [NSMutableSet setWithArray:[string2 componentsSeparatedByString:@" "]];
[set2 minusSet:set1];
NSLog(@"%@",set2);

パート2:単語を強調表示します。

単語を知ったら、簡単に強調表示できます。

于 2012-02-29T16:37:09.683 に答える
0

基本的に、 diffと同等のものを実装しようとしています。ウィキペディアのページで説明されているように、最長共通部分列問題アルゴリズムを使用します。

于 2012-02-29T16:27:23.403 に答える