两个字符串中匹配最大字符串

来源:互联网 发布:seo sem 新媒体工资 编辑:程序博客网 时间:2024/06/06 14:24
      大体意思是,给出两个字符串,用自己最熟悉的编程语言找出两个字符串中匹配最长的字符串。如:“ascdefd”和“mntrcdefpk”则匹配出的最大字符串为:cdef。自己实现了一下,呵呵,当时练笔吧,或许以后能用到。开始是用线程实现的,如果启动多个线程匹配的话,可能会更快,后来还是谢了个一般方法来实现,这个看需要和效率要求吧。废话少说,记录一下自己写的代码,以后或许用得上。

int main(int argc, char *argv[]){    NSLog(@"start");    NSString *bigStr = @"1234567890123456789012345678901234567890";    NSString *smallStr = @"123456cffdsf7890";    int length = smallStr.length;    NSMutableArray *ary = [NSMutableArray array];     for (int sublength = length; sublength > 0 ; sublength--) {         [ary removeAllObjects];         for (int j = 0; j < length; j++) {             if ((j + sublength ) <= length) {                 NSString *sub = [smallStr substringWithRange:NSMakeRange(j, sublength)];                 [ary addObject:sub];             }         }         BOOL isFindMaxLength = NO;         for( NSString *sub in ary) {             for (int j = 0; j < bigStr.length;) {                 BOOL isFind = YES;                 for (int i = 0;  i < sub.length; i++)                 {                     if ((j + i) >= bigStr.length)                     {                         isFind = NO;                         j = bigStr.length;                         break;                     }                                          NSString *temp = [sub substringWithRange:NSMakeRange(i, 1)];                     NSString *temp2 = [bigStr substringWithRange:NSMakeRange(j + i, 1)];                     if (![temp isEqualToString: temp2]) {                         j ++ ;                         i = 0;                         isFind = NO;                         break;                     }                 }                 if (isFind) {                     isFindMaxLength = isFind;                     NSLog(@"%@",sub);                     break;                 }             }         }         if (isFindMaxLength) {             break;         }     }    NSLog(@"end");}


运行结果:



0 0
原创粉丝点击