您的位置:首页 > 其它

[CrackCode] 1.3 Remove the duplicate characters in a string

2014-01-25 03:24 363 查看
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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: