字符串的3个基本算法

1.如何在字符串中找到第一个不重复的字符

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

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

2.list去重

方法一: 通过Iterator 的remove方法

public void testList() {  
   
 List list=new ArrayList();  
   
 list.add(1);  
 list.add(2);  
 list.add(4);  
 list.add(1);  
 list.add(2);  
 list.add(5);  
 list.add(1);  
 List listTemp= new ArrayList();  
 Iterator 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 list=new ArrayList();  
   list.add(1);  
   list.add(2);  
   list.add(4);  
   list.add(1);  
   list.add(2);  
   list.add(5);  
   list.add(1);  
   List tempList= new ArrayList();  
   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个基本算法)