美文网首页Orient
字符串的3个基本算法

字符串的3个基本算法

作者: 不知名的蛋挞 | 来源:发表于2017-07-24 21:21 被阅读16次
    1.如何在字符串中找到第一个不重复的字符

    方法一
      用LinkedHashMap来记录字符个数,因为LinkedHashMap维持的元素顺序与插入顺序一致,而我们正是按照字符串中字符出现的顺序来将字符插入Map中的。当我们扫描字符串时,只需要迭代LinkedHashMap并找出到第一个值为1的元素,那便是第一个非重复的字符。

    方法二
      使用HashMap,我们会在第一扫描计算各个字符的出现次数保存在HashMap中之后,再次遍历字符串并从Map中获取每个字符的个数去找到第一个不重复的字符。由于我们从左往右扫描字符,当找到某个字符的计数为1时,我们就可以跳出循环,它就是第一个非重复的字符。

    2.list去重

    方法一: 通过Iterator 的remove方法

    public void testList() {  
       
     List<Integer> list=new ArrayList<Integer>();  
       
     list.add(1);  
     list.add(2);  
     list.add(4);  
     list.add(1);  
     list.add(2);  
     list.add(5);  
     list.add(1);  
     List<Integer> listTemp= new ArrayList<Integer>();  
     Iterator<Integer> it=list.iterator();  
     while(it.hasNext()){  
      int a=it.next();  
      if(listTemp.contains(a)){  
       it.remove();  
      }  
      else{  
       listTemp.add(a);  
      }  
     }  
     for(Integer i:list){  
      System.out.println(i);  
     }  
    }  
    

    方法二:直接将结果赋值给另一个List

    public void testList2() {  
       List<Integer> list=new ArrayList<Integer>();  
       list.add(1);  
       list.add(2);  
       list.add(4);  
       list.add(1);  
       list.add(2);  
       list.add(5);  
       list.add(1);  
       List<Integer> tempList= new ArrayList<Integer>();  
       for(Integer i:list){  
           if(!tempList.contains(i)){  
               tempList.add(i);  
           }  
       }  
       for(Integer i:tempList){  
           System.out.println(i);  
       }  
    }     
    

    上面的方法很麻烦?现在教你一句话实现JAVA去重:

    //不带类型写法
    List listWithDup = new ArrayList();
    List listWithoutDup = new ArrayList(new HashSet(listWithDup));
    
    //带类型写法(以String类型为例)
    List listWithoutDup = new ArrayList<>(new HashSet<>(listWithDup));
    
    3.字符串逆序输出

    方法一

    String str="qwertyuiop";
    // 字符串下标从0开始,长度-1结束。倒序所以从长度-1开始,0结束。
    for (int i = str.length()-1; i >= 0; i--) {
       System.out.print(str.charAt(i));
    }
    

    方法二

    StringBuilder sb=new StringBuilder("qwertyuiop");
    String s = sb.reverse().toString();
    System.out.print(s);
    

    相关文章

      网友评论

        本文标题:字符串的3个基本算法

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