6、假设有一个字符串aabcad,请写一段程序,去掉字符串中不相邻的重复字符串,即上述字符串处理之后的输出结果为:aabcd

本题的题意是以第一个出现的字母作为参照,只要之后出现相同的字母并且和第一个字母不相邻,那么就删除。为防止删除某些字符之后,把之前不相邻的重复字符串转化为相邻字符串,所以可以先用空格替换掉需要删除的字符,最后对数组里面的空格进行处理。

-(void)removeRepeat:(NSString *)aNum

{

NSMutableArray *mArr = [[NSMutableArray alloc]initWithCapacity:10];

for (int i = 0;i < aNum.length;i++)

{

[mArr addObject:[aNum substringWithRange:NSMakeRange(i,1)]];

}

NSLog(@"- %@", mArr);

[self compareNum:mArr];

NSLog(@"%@",mArr);

}

//比较是否相等

-(NSMutableArray *)compareNum:(NSMutableArray *)mArr

{

int count = mArr.count;//重新定义了,count不会减一

for (int j = 0; j < count - 1; j++)

{

for (int i = j; i < count - 1-1-1; i++)

{

NSLog(@" %@  %@",[mArr objectAtIndex:j],[mArr objectAtIndex:i + 2]);

NSString *a = [mArr objectAtIndex:j];

NSString *b = [mArr objectAtIndex:i+2];

if ([a isEqualToString:b])

{

[mArr replaceObjectAtIndex:i + 2 withObject:@" "];

}

}

}

return mArr;

}

你可能感兴趣的:(6、假设有一个字符串aabcad,请写一段程序,去掉字符串中不相邻的重复字符串,即上述字符串处理之后的输出结果为:aabcd)