方式一(String)
//传参:str="qw23eqr123e4tt"
public String ARFA(String str) {
//创建一个空字符串用于接收去重后的字符串
String arfa="";
//遍历字符串str
for (int i = 0; i < str.length(); i++) {
//获取字符串中下标为i的字符(char类型)
char ch = str.charAt(i);
//如果字符串没有重复,即:每个字符的下标都会等价于该字符第一次出现时的下标
//判断字符串第一次出现ch字符时的下标是否等于i
if (str.indexOf(ch)==i) {
//将ch字符转化为String类型,并添加到字符串arfa的末尾
arfa=arfa.concat(String.valueOf(ch));
}
}
return arfa;
}
//去重结果:qw23er14t
方式二(StringBuffer)
方式二与方式一同理,方式二中的StringBuffer能够将char类型字符直接拼接,而不需要转化为String类型
//传参:str="qw23eqr123e4tt"
public String ARFA2(String str) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < str.length(); i++) {
if (str.indexOf(str.charAt(i))==i) {
sb.append(str.charAt(i));
}
}
return sb.toString();
}
//去重结果:qw23er14t
方式三(正则表达式)
/**
1.将传参str转化为StringBuffer类型
2.调用reverse()可以将StringBuffer类型sb实现倒序
3.调用toString()转化为String类型可以调用replaceAll(,)方法
4.replaceAll("(.)(?=.*\\1)", "")方法可以实现:
从前往后遍历,某字符出现的第二次,则第一出现的字符会被删除
5.再次将String类型rs转化为StringBuffer类型,并调用reverse()方法
实现倒序,调用toString()方法转化为String类型
**/
//传参:str="qw23eqr123e4tt"
public String ARFA3(String str) {
StringBuffer sb = new StringBuffer(str);
String rs = sb.reverse().toString().replaceAll("(.)(?=.*\\1)", "");
StringBuffer out = new StringBuffer(rs);
return out.reverse().toString();
}
//去重结果:qw23er14t
参考博客:java字符串去重