package java程序员面试笔试宝典;
import java.util.List;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class 题8_6_3删除字符串中重复的字符 {
public static void main(String[] args) {
String str="good you are my sister";
System.out.println(1<<3);
System.out.println(removeDuplicate_1(str));
}
//空间换时间
public static String removeDuplicate_1(String str){
char[] chs=str.toCharArray();
int[] flag=new int[8];
for (int i = 0; i < chs.length; i++) {
int index=chs[i]/32;
int shift=chs[i]%32;
if((flag[index]&(1<<shift))!=0){
chs[i]='\0';
}else{
flag[index]|=(1<<shift);
}
}
int p=0;
for (int i = 0; i < chs.length; i++) {
if(chs[i]!='\0'){
chs[p++]=chs[i];
}
}
return new String(chs, 0, p);
}
//暴力破解法
public static String removeDuplicate_0(String str){
char[] chs=str.toCharArray();
for (int i = 0; i < chs.length; i++) {
for (int j = i+1; j < chs.length; j++) {
if(chs[i]==chs[j]){
chs[j]='\0';
}
}
}
int p=0;
for (int i = 0; i < chs.length; i++) {
if(chs[i]!='\0'){
chs[p++]=chs[i];
}
}
return new String(chs, 0, p);
}
//set集合法
public static String removeDuplicate(String str){
Set<Character> set=new HashSet<Character>();
char[] chs=str.toCharArray();
StringBuffer sb=new StringBuffer();
for (int i = 0; i < chs.length; i++) {
if(set.add(chs[i])){
sb.append(chs[i]);
}
}
String strs=new String(sb);
System.out.println(strs);
return strs;
}
}
如何删除字符串中重复的字符
猜你喜欢
转载自blog.csdn.net/m0_38068868/article/details/81739578
今日推荐
周排行