string去除重复字符两个方法

string去除重复字符两个方法


网上有很多伪方法,只删除了相邻重复字符串,大家警惕!

主要使用list.contains()检测重复。


一直在想本来应该怎样做,因为面试官说了句只用了一层循环,可能这样是比较通用的:

1、charAt遍历String每个字符(第一层循环)

2、charAt遍历StringBuffer每个字符,如果没有就加进去(第二层循环)



    
    
    
    
  1. import java.util.*;
  2. public class Main06 {
  3. public static void main(String[] args) {
  4. // TODO Auto-generated method stub
  5. String str = "kjkljklhuionsd";
  6. System.out.println(sub(str));
  7. System.out.println(sub1(str));
  8. }
  9. //方法1
  10. static String sub(String str){
  11. StringBuffer result = new StringBuffer();
  12. List list = new ArrayList();
  13. char[] cs = str.toCharArray();
  14. for( int i= 0; i
  15. if(!list.contains(cs[i])){
  16. result.append(cs[i]);
  17. list.add(cs[i]);
  18. }
  19. }
  20. return result.toString();
  21. }
  22. //方法2
  23. static String sub1(String str){
  24. List list = new ArrayList();
  25. StringBuffer sb = new StringBuffer(str);
  26. int j= 0;
  27. for( int i= 0; i
  28. if(list.contains(str.charAt(i))){
  29. sb.deleteCharAt(i-j); //String 是没有delete方法的
  30. j++; //因为删除了sb中的字符,有一个偏移
  31. } else{
  32. list.add(str.charAt(i));
  33. }
  34. }
  35. return sb.toString();
  36. }
  37. }

你可能感兴趣的:(JavaEE)