string去除重复字符两个方法
网上有很多伪方法,只删除了相邻重复字符串,大家警惕!
主要使用list.contains()检测重复。
一直在想本来应该怎样做,因为面试官说了句只用了一层循环,可能这样是比较通用的:
1、charAt遍历String每个字符(第一层循环)
2、charAt遍历StringBuffer每个字符,如果没有就加进去(第二层循环)
-
import java.util.*;
-
public
class Main06 {
-
-
-
public static void main(String[] args) {
-
// TODO Auto-generated method stub
-
String str =
"kjkljklhuionsd";
-
System.out.println(sub(str));
-
System.out.println(sub1(str));
-
}
-
//方法1
-
static String sub(String str){
-
StringBuffer result =
new StringBuffer();
-
List list =
new ArrayList();
-
char[] cs = str.toCharArray();
-
for(
int i=
0; i
-
if(!list.contains(cs[i])){
-
result.append(cs[i]);
-
list.add(cs[i]);
-
}
-
}
-
return result.toString();
-
}
-
//方法2
-
static String sub1(String str){
-
List list =
new ArrayList();
-
StringBuffer sb =
new StringBuffer(str);
-
int j=
0;
-
for(
int i=
0; i
-
if(list.contains(str.charAt(i))){
-
sb.deleteCharAt(i-j);
//String 是没有delete方法的
-
j++;
//因为删除了sb中的字符,有一个偏移
-
}
else{
-
list.add(str.charAt(i));
-
}
-
}
-
return sb.toString();
-
}
-
}