string去除重复字符两个方法

来源:互联网 发布:nginx 跳转到二级目录 编辑:程序博客网 时间:2024/05/16 04:47

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 stubString str = "kjkljklhuionsd";System.out.println(sub(str));System.out.println(sub1(str));}//方法1static 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();}//方法2static 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();}}

1 0