Это скорее вопрос любопытства, чем насущный. Этот вопрос ищет лучший способ сделать следующее, то есть без использования двух for
петель.
У меня есть NSArray *array
из NSString
с и метод -(BOOL)isGoodString:(NSString *)string
. Я хочу запрыгнуть в массив в случайном месте и найти первую хорошую строку, при необходимости оборачивая конец. Тем не менее, возможно, что нет хорошей строки, поэтому мне нужно это знать. Вот текущая реализация:
-(NSString *)randomGoodString {
int N = [array count]
int start = arc4random() % N;
for (int j=start; j<N ; ++j) {
if isGoodString([array objectAtIndex:j]) {
return [array objectAtIndex:j];
}
}
for (j=0; j<start ; ++j) {
if isGoodString([array objectAtIndex:j]) {
return [array objectAtIndex:j];
}
}
return @"";
}
Есть предложения? Эффективность была бы хорошей, но так как это действительно больше для любопытства, все, что работает в ограниченное время, было бы приятно услышать.