【算法】字符串去重(String.indexOf、StringBuilder实现)

indexOf(): 返回指定字符 第一次 出现的下标
lastIndexOf(): 返回指定字符 最后一次 出现的下标

对于字符串 String str,使用for循环遍历时:
 
当满足:
str.indexOf(s.charAt(i)==str.lastIndexOf(s.charAt(i))时,
则下标为 i 的字符在字符串 str 中唯一;

 
当满足:
str.indexOf(str.charAt(i))==i时,
则此位置,下标为 i 的字符在字符串 str 中是第一次出现;
 
当满足:
str.lastIndexOf(str.charAt(i))==i时,
则些位置,下标为 i 的字符在字符串 str 中最后一次出现;

对于字符串去重,无论该字符在 str 中是否唯一(重复),我们只需要将每一个字符第一次出现时,将其加入builder中,最后返回builder.toString就可以完成去重了

/**
* 循环遍历查找:
* 当 str.indexOf(str.charAt(i))==i时,
* 表明在 str中,下标为 i的字符为第一次出现,
* 加入 StringBuilder中存储,
* 遍历结束返回 StringBuilder.toString();
*/
public static String v(String str){
	if(str==null)return null; // 非空判断
	StringBuilder builder = new StringBuilder();
	for(int i=0;i<str.length;i++){
		if(str.indexOf(str.charAt(i)==i){
			builder.append(str.charAt(i));
		}
	}
	return builder.toString();
}
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
引用\[1\]和\[2\]提供了两种使用StringBuilder去重的方法。其中,引用\[1\]的方法是通过循环遍历字符串,判断每个字符在字符串中第一次出现的位置,将其加入StringBuilder中,最后返回去重后的字符串。而引用\[2\]的方法是通过将字符串转换为字符数组,然后使用双重循环遍历数组,将重复出现的字符置为'\0',最后将字符数组转换为字符串返回。这两种方法都可以实现StringBuilder去重的功能。 另外,引用\[3\]提供了一个使用StringBuilder过滤重复字符的方法。该方法通过遍历字符串,判断每个字符在字符串中第一次出现的位置和最后一次出现的位置是否相等,如果相等则表示该字符没有重复出现,直接将其加入StringBuilder中,如果不相等则表示该字符重复出现,但只将第一次出现的字符加入StringBuilder中。最后返回去重后的字符串。 综上所述,可以使用StringBuilder的append方法和indexOf方法来实现字符串去重的功能。 #### 引用[.reference_title] - *1* [【算法字符串去重(String.indexOfStringBuilder实现)](https://blog.csdn.net/T_158327/article/details/124049962)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [String字符串去重,保证顺序](https://blog.csdn.net/iblade/article/details/86649990)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Java字符串去重的几种实现](https://blog.csdn.net/qq_45145768/article/details/111597127)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

り澄忆秋、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值