【算法】字符串去重(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();
}

你可能感兴趣的:(java,算法)