Java字符串去掉重复字符
例如:3dd2tt3去掉之后为3d2t32ccct3ffffee去掉之后为2cct3fffee准确点说,数字后多有重复的去掉一个重复的,其余的照样,非数字后的重复字符照样...
例如:
3dd2tt3去掉之后为3d2t3
2ccct3ffffee去掉之后为2cct3fffee
准确点说,数字后多有重复的去掉一个重复的,其余的照样,非数字后的重复字符照样(ee->ee)
末尾的意思是ee应该为ee,箭头被换行了···
还有忘写了··
字符是任意字符,可以不考虑一些符号类的。有连续相同的数字字符
比如:05dd322pp--->05d32p 展开
3dd2tt3去掉之后为3d2t3
2ccct3ffffee去掉之后为2cct3fffee
准确点说,数字后多有重复的去掉一个重复的,其余的照样,非数字后的重复字符照样(ee->ee)
末尾的意思是ee应该为ee,箭头被换行了···
还有忘写了··
字符是任意字符,可以不考虑一些符号类的。有连续相同的数字字符
比如:05dd322pp--->05d32p 展开
展开全部
package problem;
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));
}
}
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));
}
}
展开全部
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));
}
}
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));
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先把这些字符串用一个变量保存,然后转换成tochararray数组进行循环可以有contains进行判断是否有相同字符,用嵌套循环,随即改变数组值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
通过Map集合应该可以吧:把字符串的每个字符作为Map集合的Key,放入Map集合,然后再把Key重新组合成新的字符串,有兴趣可以试一下啊,看看是否是你想要的结果。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询