去除字符串中的重复字符,对于出现超过2次(包含2次)的字符,只保留第一个。
例:输入abcbdde,输出abcde。
示例1
输入
“abcbdde”
输出
“abcde”
用HashMap写的,还没看简单方法。
import java.util.*;
public class Solution {
/**
*
* @param str string字符串
* @return string字符串
*/
public String removeDuplicatedChars (String str) {
// write code here
String result="";
Map<String, String> map=new HashMap<String, String>();
for(int i=0;i<str.length();i++) {
if(map.containsKey(str.charAt(i)+"")) {
}else {
map.put(str.charAt(i)+"", "1");
result=result+str.charAt(i);
}
}
//map.put("a","1");
return result;
}
}
不用集合类的方法
public static void main(String srgs[]) {
Scanner sc=new Scanner(System.in);
String str=sc.nextLine();
Boolean[] b1= new Boolean[26];
Boolean[] b2= new Boolean[10];
StringBuilder sb=new StringBuilder("");
for(int i=0;i<str.length();i++) {
//System.out.println("###");
if(str.charAt(i)>'a'&&str.charAt(i)<'z') {
if(b1[str.charAt(i)-'a']==null) {
b1[str.charAt(i)-'a']=true;
sb.append(str.charAt(i));
}
}else {
if(b2[str.charAt(i)-'1']==null) {
b2[str.charAt(i)-'1']=true;
sb.append(str.charAt(i));
}
}
}
System.out.println(sb);
}
别人的replaceAll方法,还不太会
public static String duplicateRemovalV2(String str) {
if (StringUtils.isNotBlank(str)) {
StringBuffer s = new StringBuffer(str);
s = s.reverse();
str = s.toString();
str = str.replaceAll("(?s)(.)(?=.*\\1)", "");
s = new StringBuffer(str);
return s.reverse().toString();
}
return null;
}