2

在过去的两天里,我一直在努力解决一个问题,并想知道社区是否可以提供帮助。我有一个 NSString 的数字,我需要比较有多少数字与另一个字符串中的数字数量相匹配。

例子:

     String 1: 14523 25623 651 88

     String 2: 9123 88 14523 333

根据这两个字符串,我们可以看到它们都包含“88”和“14523”。所以有2场比赛。我不知道如何通过代码弄清楚这种比较。

我曾想过简单地使用一个子字符串来分解字符串 1 并将每个值与字符串 2 进行比较,但这非常低效。我相信有更好的方法。

任何人都可以提供任何建议吗?一个例子将非常感激。谢谢!

4

3 回答 3

7

为每个字符串创建一组子字符串。然后做两个集合的交集以找到公共子字符串。

NSString *string1 = @"14523 25623 651 88";
NSString *string2 = @"9123 88 14523 333";
NSSet *setA = [NSSet setWithArray:[string1 componentsSeparatedByString:@" "]];
NSSet *setB = [NSSet setWithArray:[string2 componentsSeparatedByString:@" "]];
NSMutableSet *common = [setA mutableCopy];
[common intersectSet:setB];
NSLog(@"common substrings = %@", common);
于 2012-11-04T23:45:42.697 回答
3
    NSString *str1 = @"14523 25623 651 88";
    NSString *str2 = @"9123 88 14523 333";
    NSArray *chunks = [str1 componentsSeparatedByString:@""];
    NSArray *chunks2 = [str2 componentsSeparatedByString:@""];
    NSMutableSet *intersection = [NSMutableSet setWithArray:chunks];
    [交集 intersectSet:[NSSet setWithArray:chunks2]];
    NSLog(@"%@", [intersection allObjects]);
    
于 2012-11-04T23:50:21.960 回答
0

您创建两个数组:

具有方法 componentsSeparatedByString 的第一个数组和字符串一。

第二个数组,方法为 componentsSeparatedByString,字符串为 2。

现在,将第二个数组中的元素添加到第一个数组,仅当第一个数组不包含此元素时才添加。

于 2012-11-04T23:52:38.793 回答