您的位置:首页 > 大数据 > 人工智能

string去除重复字符两个方法

2016-09-20 21:54 218 查看
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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息