我必须实现一个算法,该算法将两个字符串作为输入,并返回一个包含子字符串变化范围的数组。
比方说,范围定义为
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.";
变化是:
我需要一个包含按变化分组的子串的数组。在这个例子中,它看起来像这样:
目标是突出显示现有字符串中的这些更改,我必须根据更改将该字符串拆分为子字符串。
在重新发明轮子之前 - 公共领域是否有解决方案?
答案 0 :(得分: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部分:突出显示单词。
知道单词之后很容易突出显示。
答案 1 :(得分:0)
您基本上是在尝试实现等效的diff。如维基百科页面中所述,它使用longest common subsequence problem算法。