我正在寻找最快和最简单的方法来确定一个单词子字符串是否出现在给定的从右到左的字符串中。
如果值得注意的话,我将使用Objective C并在iPhone 应用程序中实现该算法。我还搜索了这个算法,发现了 KMP 或 BM 等算法,正如我所想的那样,它们被用于处理多于一个单词的子字符串。如果我的假设是错误的,请告诉我!
谢谢你,iLyrical。
怎么样:
if([string rangeOfString:@" foo "].location != NSNotFound)
//I found it, yippee!!
编辑虽然我从来没有在从右到左的字符串上尝试过......而且我意识到这与第一个或最后一个单词不匹配......所以在此之后你也必须检查那些:-S
另一个编辑 您也可以使用正则表达式。该NSRegularExpression
课程将允许您这样做。你想要的那个\s*foo\s*
一种简单有效的方法是通过拆分字符串然后检查该单词是否存在于哈希表中来创建所有单词的字典(哈希表)。
NSString *string = @"abc def xyz";
if ([string rangeOfString:@"abc"].location == NSNotFound) {
NSLog(@"string does not contain abc");
}
else {
NSLog(@"string contains abc");
}
希望,这会让你...
如果您的意思是完全比较的话,它一文不值。最简单的方法是一一比较,只需要读取父字符串一次。