删除后只留下一个
例如:abacddcaba
结果:abcd
public static String sub(String str){
//存放结果
String s="";
//用于判断,之所以不用list存放结果是因为list的tostring方法中不是想要的格式
List<Character> list = new ArrayList<>();
char[] c = str.toCharArray();
for(int i=0; i<c.length; i++){
//.contains
//判断c[i]是否在list中存在,存在返回true(说明重复),不存在返回false
if(!list.contains(c[i])){
s+=c[i];
list.add(c[i]);
}
}
return s;
}
删除重复相邻的字符串
例如:abacddcaba
结果:null
过程:1 将s的每个字符放入str中,创建一个top(-1)辅助遍历
2 放入第一个字符并把top置为0,也就是首字符的下标,i代表s中字符的下标
3 然后每次添加一个就就和前一个比较
4 相同就通过deleteCharAt删除,并把top前移一次
public static String remove(String s) {
StringBuffer str = new StringBuffer();
int top = -1;
for (int i = 0; i < s.length(); ++i) {
char ch = s.charAt(i);
if (top >= 0 && str.charAt(top) == ch) {
str.deleteCharAt(top);
--top;
} else {
str.append(ch);
++top;
}
}
if (str.length() == 0) {
return null;
}else {
return str.toString();
}
}