删除字符串中重复的字符

时间:2023-01-03 21:49:36

出自CareerCup

书中有错误,对于多个重复,解析不正确

Design an algorithm and write code to remove the duplicate characters in a string without using any additional buffer. NOTE: One or two additional variables are fine. An extra copy of the array is not.
FOLLOW UP
Write the test cases for this method.


修改后如下


/**
* InterTest
* cn.ustc.inter.array_string
* RemoveDuplicates.java
* @version 1.0.0
* 2012-4-11 下午12:28:06
* Copyright (c) ustcxjt
*
*/
package cn.ustc.inter.array_string;

/**
*
* RemoveDuplicates
*
* Author:ustcxjt Modify by ustcxjt Date:2012-4-11 下午12:28:06
*
* @version 1.0.0
*
*/
public class RemoveDuplicates {

public static char[] removeDuplicates(char[] str) {
if (str == null)
return str;
int len = str.length;
if (len < 2)
return str;
int tail = 1;
int k=0;
for (int i = 1; i < len; i++) {
int j;
for (j = 0; j < tail; j++) {
if (str[i] == str[j]){
k++;
break;
}
}
if (j == tail) {
str[tail] = str[i];
++tail;
}
}
for(int i=0;i<k;i++)
str[len-i-1] = 0;
return str;
}

/**
* main(这里用一句话描述这个方法的作用) (这里描述这个方法适用条件 – 可选)
*
* @param args
* void
* @exception
* @since 1.0.0
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "aabacabaadfgddddffffjk";
System.out.println(RemoveDuplicates.removeDuplicates(str.toCharArray()));
//char[] str= {'a','b','b','b','a'};
//System.out.println(RemoveDuplicates.removeDuplicates(str));
}

}