过去两天我一直在努力解决问题,并且想知道社区是否可以提供帮助。我有一个NSString数字,我需要比较多少个数字匹配另一个字符串中的数字量。
示例:
String 1: 14523 25623 651 88
String 2: 9123 88 14523 333
根据这两个字符串,我们可以看到它们都包含“88”和“14523”。所以有2场比赛。我不知道如何通过代码找出这种比较。
我想过只需要一个子串来分解字符串1并将每个值与字符串2进行比较,但效率非常低。我相信有更好的方法。
有人可以提供任何建议吗?一个例子将非常感激。谢谢!
答案 0 :(得分: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);
答案 1 :(得分: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]; [intersection intersectSet:[NSSet setWithArray:chunks2]]; NSLog(@"%@", [intersection allObjects]);
答案 2 :(得分:0)
您创建了两个数组:
第一个数组,方法componentsSeparatedByString,字符串为一。
第二个数组,方法componentsSeparatedByString,字符串为二。
现在,将第二个数组中的elemnt添加到第一个数组,仅在第一个数组不包含此元素时添加。