昨天笔试有这么一个问题,去除一个字符数组的重复部分,不能开辟额外的空间。
思路大概如下:
利用字符串结束符 ‘\0’,和一个额外的下标index,从而实现原来字符数组的复用
1、对数组遍历,如果不为’\0’,做第二步
2、将当前元素的值赋给下标为index的数组,index往后移动一位
3、对当前元素之后的所有元素进行遍历,如果碰到和当前元素相同的,将其置为 ‘\0’
4、对数组遍历结束,index对应的数组值置 ‘\0’
5、这时候就得到了去重的字符数组,结束位置为index
代码如下:
public static void remove3(char[] array) {
if (array == null || array.length <= 0) {
return;
}
int len = <