第7行,unichar c = [s characterAtIndex:i]; 每次进入循环都是重新在新的字符串基础上计算位置,[s deleteCharactersInRange:NSMakeRange(i, 1)];一旦删除后,字符串长度-1,i对应位置变成了下一位,即下次得到的字符位置变成了后一位,所以第二个1被跳过去了。
[s deleteCharactersInRange:NSMakeRange(i, 1)];后加个i--;
每次删除字符后后把i-1来抵消这种情况。i < s.length;这个判断也是每次重新计算长度的,不会越界。 |