Как я могу оптимизировать этот вложенный цикл?Как я могу оптимизировать этот вложенный цикл?
Программа должна проходить каждое слово в массиве, созданном из текстового файла слова, а если оно больше 8 символов, добавьте его в массив goodWords
. Но нюанс в том, что я хочу только корень слова, чтобы быть в массиве goodWords, например:
Если Приветствуйте добавляется в массив, я не хочу, здоровается или приветствия или встречающих и т.д.
NSString *string = [NSString stringWithContentsOfFile:@"/Users/james/dev/WordParser/word.txt" encoding:NSUTF8StringEncoding error:NULL];
NSArray *words = [string componentsSeparatedByString:@"\r\n"];
NSMutableArray *goodWords = [NSMutableArray array];
BOOL shouldAddToGoodWords = YES;
for (NSString *word in words)
{
NSLog(@"Word: %@", word);
if ([word length] > 8)
{
NSLog(@"Word is greater than 8");
for (NSString *existingWord in [goodWords reverseObjectEnumerator])
{
NSLog(@"Existing Word: %@", existingWord);
if ([word rangeOfString:existingWord].location != NSNotFound)
{
NSLog(@"Not adding...");
shouldAddToGoodWords = NO;
break;
}
}
if (shouldAddToGoodWords)
{
NSLog(@"Adding word: %@", word);
[goodWords addObject:word];
}
}
shouldAddToGoodWords = YES;
}
Это примерно в 50 раз быстрее, чем моя версия, хорошо сделано;) – Jasarien
@ Jasarien, вы можете сделать немного больше, чем просто 'hasPrefix:', так как 'hasPrefix:' чувствителен к регистру ... –
Он работал красиво. Весь файл сделан из строчных слов, поэтому это не проблема. – Jasarien