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 fineAn extra copy of the array is not.
FOLLOW UP
Write the test cases for this method
Analysis:
If constant extract space is allowed, use boolean array char_set[256] to determine if duplicated character is encountered. If so, remove this character (by concat its upper part substring and lower part substring).
If constant extract space is not allowed, use two loop to compare all the possible pairs of characters.
public class Answer {
public static String solution(String str){
if( str == null||str.length()<2) return str;
int pointer=0;
boolean[] char_set = new boolean[256];
while(pointer<str.length()){
char value = str.charAt(pointer);
if(char_set[value]==true){
str = str.substring(0, pointer) + str.substring(pointer+1);
} else{
char_set[value] = true;
pointer++;
}
}
return str;
}
public static String solution2(String str){
if(str == null||str.length()<2) return str;
for (int i=0; i<str.length()-1; i++){
int j=i+1;
while (j<str.length()){
if(str.charAt(i)==str.charAt(j)){
if(j<str.length()-1) str = str.substring(0, j) + str.substring(j+1);
else str = str.substring(0, j);
} else{
j++;
}
}
}
return str;
}
public static void main(String[] args) {
String s = null;
String answer =solution2(s);
System.out.print(answer);
}
}