JAVA删除重复字符串

来源:互联网 发布:nginx zookeeper 区别 编辑:程序博客网 时间:2024/06/06 20:31

转自:http://blog.csdn.net/u011299745/article/details/52600856

string去除重复字符


今天面试遇到,使用了第一种,回来记录了下,觉得一般可能不是这样解的。想了第二种,还是觉得不妥,这里都贴出来。

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

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


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

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

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


import java.util.*;  public class Main06 {          public static void main(String[] args) {          // TODO Auto-generated method stub          String str = "kjkljklhuionsd";          System.out.println(sub(str));          System.out.println(sub1(str));      }      //方法1      static String sub(String str){          StringBuffer result = new StringBuffer();          List list = new ArrayList();          char[] cs = str.toCharArray();          for(int i=0; i<cs.length; i++){              if(!list.contains(cs[i])){                  result.append(cs[i]);                  list.add(cs[i]);              }          }          return result.toString();      }      //方法2      static String sub1(String str){          List list = new ArrayList();          StringBuffer sb = new StringBuffer(str);          int j=0;          for(int i=0; i<str.length(); i++){              if(list.contains(str.charAt(i))){                  sb.deleteCharAt(i-j);     //String 是没有delete方法的                  j++; //因为删除了sb中的字符,有一个偏移              }else{                  list.add(str.charAt(i));              }          }          return sb.toString();      }  }  


原创粉丝点击