美文网首页
字符串去重的几种方法

字符串去重的几种方法

作者: 从0到1的小姐姐 | 来源:发表于2021-12-27 18:34 被阅读0次

    需求:去除一个字符串中重复的字符
    例如: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
            }
    
    
        }
    }
    
    

    相关文章

      网友评论

          本文标题:字符串去重的几种方法

          本文链接:https://www.haomeiwen.com/subject/augyqrtx.html