给定一个长度为字符串, 需要去除所有之前曾经出现过的字符,只保留第一次出现的字符
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return string字符串 */ public String unique_string (String s) { HashSet<Character> set = new HashSet<>(); char[] ch = s.toCharArray(); StringBuilder sb = new StringBuilder(); for (char c : ch) { if (!set.contains(c)) { set.add(c); sb.append(c); } } return sb.toString(); } }
if (s.indexOf(s.charAt(i)) == i)如果s的i位字符x不重复,s.indexOf(x)的索引值一定等于i
public String unique_string (String s) { // write code here StringBuffer sb = new StringBuffer(); for (int i = 0; i < s.length(); i++) { if (s.indexOf(s.charAt(i)) == i) { sb.append(s.charAt(i)); } } return sb.toString(); }时间复杂度o(n) 空间复杂度o(H) h为去重后字符串长度
public static String unique_string (String s) { long dic = 0; StringBuilder sb = new StringBuilder(); for(int i = 0;i < s.length(); ++i) { long c = 1L << s.charAt(i) - 'a'; if((dic & c) == 0){ sb.append(s.charAt(i)); dic |= c; } } return sb.toString(); }
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return string字符串 */ string unique_string(string s) { // write code here string ans = ""; unordered_set<char> st; for (auto& c: s) { if (st.find(c) != st.end()) continue; st.insert(c); ans.push_back(c); } return ans; } };
public String unique_string (String s) { Set<Character> set = new HashSet<>(); StringBuilder sb = new StringBuilder(); for (char c : s.toCharArray()) { if (!set.contains(c)){ set.add(c); sb.append(c); } } return sb.toString(); }用数组表示,一个测试用例都过不去,但是在自己的IDE上可以过
public String unique_string (String s) { int[] cnt = new int[128]; StringBuilder sb = new StringBuilder(); for (char c : s.toCharArray()) { cnt[c]++; if (cnt[c] > 1 || c < 97) { continue; } sb.append(c); } return sb.toString(); }
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return string字符串 */ public String unique_string (String s) { // write code here HashMap hashMap = new HashMap(); String news = new String(); for(int i=0;i<s.length();i++){ if(!hashMap.containsKey(s.substring(i,i+1))){ hashMap.put(s.substring(i,i+1),true); news += s.substring(i,i+1); } } return news; } }
public String unique_string (String s) { // write code here HashSet<Character> charList = new HashSet<>(); StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < s.length(); i++) { if(charList.add(s.charAt(i))){ stringBuilder.append(s.charAt(i)); } } return stringBuilder.toString(); }
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return string字符串 */ public String unique_string (String s) { // write code here if(s==null || s.length()<=1){ return s; } int [] bucket =new int [128]; char [] cs =s.toCharArray(); int len =cs.length; StringBuilder sb =new StringBuilder(); for(int i =0;i<len;i++){ if(bucket[cs[i]]!=0){ continue; } sb.append(cs[i]); bucket[cs[i]]++; } return sb.toString(); } }