我已经编写了下列方法来确定一个长单词是否包含较短的单词,并且我传递这些字母的顺序似乎影响结果。Anagram/partial anagram检测算法找到不正确的答案
我发现,如果我给它absconds
和bassy
它正确报道NO
,但如果我按字母顺序排列的字母,并给它abcdnoss
和abssy
,它给YES
。我不太确定这是为什么 - 任何人都可以发现问题?
- (BOOL) does: (NSString*) longWord contain: (NSString *) shortWord {
while([longWord length] > 0 && [shortWord length] > 0) {
NSCharacterSet *set = [NSCharacterSet characterSetWithCharactersInString: [shortWord substringToIndex: 1]];
if ([longWord rangeOfCharacterFromSet: set].location == NSNotFound) {
return NO;
}
longWord = [longWord substringFromIndex: [longWord rangeOfCharacterFromSet: set].location+1];
shortWord = [shortWord substringFromIndex: 1];
}
return YES;
}
这不起作用。上述两个例子均返回no,按字母顺序排列且未按字母顺序排列。 – Luke
例如,在'tower'(或'eorwt')中,由于'r'的位置,此代码不会找到'two'(或'otw')。 – Luke