计算两个字符串的最大字符串匹配,对极端以及错误情况不作处理
首先选定一个字符串作为目标字符串,获取这个目标字符串的所有字符子集
比如 targetString = "abcd"
,则根据传入的不同 index
可以得到的字符子集为[abcd] 或 [abc,bcd] 或 [ab,bc,cd] 或 [a,b,c,d]
- (NSArray *)arrOfSubString:(NSString *)targetString index:(NSUInteger)index {
NSMutableArray *arr_string = [NSMutableArray new];
for (int i = 0; i <= targetString.length-index; i ++) {
NSString * subString = [targetString substringWithRange:NSMakeRange(i, index)];
[arr_string addObject:subString];
}
return arr_string;
}
然后遍历字符子集中的每个元素,与另外一个字符串做匹配
// 最大字符匹配
- (void)matchMaxLengthString:(NSString *)firstString sendString:(NSString *)secondString {
BOOL isMatched = NO;
NSString *resultString = @"";
for (NSInteger i = secondString.length; i > 0; i--) {
// 获取字符子集
NSArray *arrString = [self arrOfSubString:secondString index:i];
for (int j = 0 ; j < arrString.count; j ++) {
// 用子集中的每一个元素与目标字符串进行匹配
if ([firstString rangeOfString:arrString[j]].location != NSNotFound) {
isMatched = YES;
resultString = arrString[j];
break;
}
}
if (isMatched) {
break;
}
}
NSLog(@"result == %@",resultString);
}
网友评论