需求:去除一个字符串中重复的字符
例如:dsjiauinhkoijajaig
输出:dsjiaunhkog
1、比较下标
特点:保持原有字符串顺序
思路:遍历字符串元素,元素的下标应该要等于第一次出现的索引的下标
String s = "dsjiauinhkoijajaig";
//方法1:利用下标判断
String s1 ="";
for(int i=0;i<s.length();i++){
char a = s.charAt(i);
if(s.indexOf(a)==i){
//indexOf只会返回第一次出现该值的下标
s1+=a;
}
//如果下标不同,证明出现过,就不再拼接
}
System.out.println("保持原有顺序,使用字符串下标比较去重:");
2、使用hashset
特点:不重复+无序
//方法2:利用hashset
HashSet<Character> hashset = new HashSet<>();
for(int k=0;k<s.length();k++){
char cha1 = s.charAt(k);
hashset.add(cha1);
}
System.out.println("无序,使用hashset去重:");
3、使用treeset
特点:不重复+排序
//方法3:利用treeset,不仅去重了还排序了
TreeSet<Character> tree = new TreeSet<>();
for(int j=0;j<s.length();j++){
char cha = s.charAt(j);
tree.add(cha);
}
// System.out.println(tree);//[a, d, g, h, i, j, k, n, o, s, u]
for(Character j:tree){
System.out.print(j+"");//adghijknosu
}
完整代码:
package Practise;
import java.util.HashSet;
import java.util.TreeSet;
/**
* 字符串去重
*/
public class StringRemove {
public static void main(String[] args) {
String s = "dsjiauinhkoijajaig";
//方法1:利用下标判断
String s1 ="";
for(int i=0;i<s.length();i++){
char a = s.charAt(i);
if(s.indexOf(a)==i){
//indexOf只会返回第一次出现该值的下标
s1+=a;
}
//如果下标不同,证明出现过,就不再拼接
}
System.out.println("保持原有顺序,使用字符串下标比较去重:");
System.out.println(s1);//dsjiaunhkog
//方法2:利用hashset
HashSet<Character> hashset = new HashSet<>();
for(int k=0;k<s.length();k++){
char cha1 = s.charAt(k);
hashset.add(cha1);
}
System.out.println("无序,使用hashset去重:");
// System.out.println(hashset);//[a, d, g, h, i, j, k, n, o, s, u]
for(Character m:hashset){
System.out.print(m+"");//adghijknosu
}
System.out.println();
System.out.println("排序,使用treeset去重:");
//方法3:利用treeset,不仅去重了还排序了
TreeSet<Character> tree = new TreeSet<>();
for(int j=0;j<s.length();j++){
char cha = s.charAt(j);
tree.add(cha);
}
// System.out.println(tree);//[a, d, g, h, i, j, k, n, o, s, u]
for(Character j:tree){
System.out.print(j+"");//adghijknosu
}
}
}
网友评论