У меня получилось ниже ошибки памяти, когда я пытаюсь найти самую длинную подстроку, которая является той же самой в обратном порядке. Приложение вылетает после того, как съедает всю память компьютеров.Ошибка памяти при попытке найти самую длинную подстроку, которая в обратном порядке в iOS
mach_vm_map(size=1048576) failed (error code=3) *** error: can't allocate region securely
Я вызываю функцию из viewDidLoad со строкой, а мои коды также находятся ниже. Спасибо за любую помощь.
- (void)viewDidLoad {
[super viewDidLoad];
NSString *text = @"FourscoreandsevenyearsagoourfaathersbroughtforthonthiscontainentanewnationconceivedinzLibertyanddedicatedtothepropositionthatallmenarecreatedequalNowweareengagedinagreahtcivilwartestingwhetherthatnaptionoranynartionsoconceivedandsodedicatedcanlongendureWeareqmetonagreatbattlefiemldoftzhatwarWehavecometodedicpateaportionofthatfieldasafinalrestingplaceforthosewhoheregavetheirlivesthatthatnationmightliveItisaltogetherfangandproperthatweshoulddothisButinalargersensewecannotdedicatewecannotconsecratewecannothallowthisgroundThebravelmenlivinganddeadwhostruggledherehaveconsecrateditfaraboveourpoorponwertoaddordetractTgheworldadswfilllittlenotlenorlongrememberwhatwesayherebutitcanneverforgetwhattheydidhereItisforusthelivingrathertobededicatedheretotheulnfinishedworkwhichtheywhofoughtherehavethusfarsonoblyadvancedItisratherforustobeherededicatedtothegreattdafskremainingbeforeusthatfromthesehonoreddeadwetakeincreaseddevotiontothatcauseforwhichtheygavethelastpfullmeasureofdevotionthatweherehighlyresolvethatthesedeadshallnothavediedinvainthatthisnationunsderGodshallhaveanewbirthoffreedomandthatgovernmentofthepeoplebythepeopleforthepeopleshallnotperishfromtheearth";
[self findTheLongestReverse:text];
}
- (BOOL)findTheLongestReverse:(NSString *)str
{
NSInteger txtIndex = [str length];
int k, i;
for(k = 0; k < (txtIndex +1); k++) {
for (i = 0; i < (k + 1); i++) {
NSRange subStrRange = NSMakeRange(i, txtIndex - k);
NSString *subString = [str substringWithRange:subStrRange];
NSInteger charIndex = [subString length];
NSMutableString *reversedString = [NSMutableString string];
while (charIndex > 0) {
charIndex--;
NSRange subStrRange2 = NSMakeRange(charIndex, 1);
[reversedString appendString:[subString substringWithRange:subStrRange2]];
}
if([subString isEqualToString:reversedString]) {
NSLog(@"reverse word is: %@", subString);
return YES;
}
}
}
return NO;
}
Что вы подразумеваете под «самой длинной подстрокой, которая одинакова в обратном направлении»? Вы имеете в виду некоторую строку символов в большей строке, которая является палиндром? Как «Это мой папа» содержит «папа»? или «ma am I your favorite» содержит «ma am»? –
, если вход был «Ilikeracecarsthatgofastblabladadblabla», ответом будет «гоночный автомобиль». Потому что «гоночный автомобиль» одинаковый на обратном пути и длиннее, чем «папа» или «ma am». – mehmeet43