美文网首页
最大字符串匹配

最大字符串匹配

作者: 厨子 | 来源:发表于2018-03-27 17:10 被阅读20次

    计算两个字符串的最大字符串匹配,对极端以及错误情况不作处理

    首先选定一个字符串作为目标字符串,获取这个目标字符串的所有字符子集

    比如 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);
    }
    

    相关文章

      网友评论

          本文标题:最大字符串匹配

          本文链接:https://www.haomeiwen.com/subject/qmescftx.html