Я пытаюсь написать метод, который генерирует все подстроки данного NSString с фиксированной длиной, но я застреваю. Вот идея того, что я хочу:
-(int)countGoodSubstringsOfString:(NSString*)str ofLength:(int)len {
int cnt = 0;
for (NSString *substr substring of str of length len) {
if ([self isGoodSubstring:substr ofString:str])
cnt++;
}
return cnt;
}
Под подстрокой я подразумеваю все возможные комбинации len
символов из str
. Если str = @"ABCDE"
и len = 4
, то мне нужно получить 5 подстрок: @"ABCD", @"ABCE", @"ABDE", @"ACDE", @"BCDE"
.
Если бы len
было исправлено, то я мог бы просто написать вложенные циклы for
, чтобы получить все подстроки, подобные этой
NSString *substr = @"";
for (int i=0; i<str.length-len+1; ++i) {
substr = [substr stringByAppendingString:[str substringWithRange:NSMakeRange(i,1)]];
for (int j=i+1; j<str.length-len+2; ++j) {
substr = [substr stringByAppendingString:[str substringWithRange:NSMakeRange(j,1)]];
...
for(int k=j+1; k<str.length; ++k) {
substr = [substr stringByAppendingString:[str substringWithRange:NSMakeRange(k,1)]];
if ([self isGoodSubstring:substr ofString:str])
cnt++;
Но поскольку len
является частью ввода, я не могу знать это заранее. Как я могу обойти эту проблему?