JAVA字符串去重的几种方式

方式一(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字符串去重

  • 12
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值