Java字符串去掉重复字符
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java字符串去掉重复字符相关的知识,希望对你有一定的参考价值。
例如:
3dd2tt3去掉之后为3d2t3
2ccct3ffffee去掉之后为2cct3fffee
准确点说,数字后多有重复的去掉一个重复的,其余的照样,非数字后的重复字符照样(ee->ee)
末尾的意思是ee应该为ee,箭头被换行了···
还有忘写了··
字符是任意字符,可以不考虑一些符号类的。有连续相同的数字字符
比如:05dd322pp--->05d32p
public class Nonrepeat
public static String delRepeat(String str)
char[] arr = str.toCharArray();
StringBuffer target = new StringBuffer();
boolean blDigit = false;
char nextChar = 0;
for (char c : arr)
if (isDigit(c))
target.append(c);
blDigit = true;
else if (!blDigit)
target.append(c);
else if (nextChar == 0 && blDigit)
target.append(c);
nextChar = c;
else if (blDigit && c != nextChar)
target.append(c);
blDigit = false;
nextChar = 0;
else if (blDigit && c == nextChar)
blDigit = false;
nextChar = 0;
return target.toString();
private static boolean isDigit(char c)
if (c > '0' && c < '9')
return true;
return false;
public static void main(String[] args)
String s = "ss2ss15ddddsdf";
System.out.println(delRepeat(s));
参考技术A public class Demo
public static String delDuplication(String s)
Pattern p = Pattern.compile("\\d([a-zA-Z0-9])\\1+");
Matcher m = p.matcher(s);
Stack<Integer> stack = new Stack<Integer>();
int end = 1;
while(m.find(end-1))
end = m.end();
stack.add(m.start() + 1);
Integer index = 0;
while(!stack.isEmpty())
index=stack.pop();
s = s.substring(0, index)+s.substring(index + 1);
return s;
public static void main(String[] args)
String s = "2ccct3ffffee";
System.out.println(delDuplication(s));
参考技术B 先把这些字符串用一个变量保存,然后转换成tochararray数组进行循环可以有contains进行判断是否有相同字符,用嵌套循环,随即改变数组值 参考技术C 通过Map集合应该可以吧:把字符串的每个字符作为Map集合的Key,放入Map集合,然后再把Key重新组合成新的字符串,有兴趣可以试一下啊,看看是否是你想要的结果。
java正则去掉重复字符
转自http://xuejianxinokok.blog.163.com/blog/static/4043757720104145738383/
以上是关于Java字符串去掉重复字符的主要内容,如果未能解决你的问题,请参考以下文章
java中去掉字符串数组中重复的字符串(不改变原有顺序)并计数(不同的字符串重复了多少次)