316. 去除重複字母
給你乙個字串s
,請你去除字串中重複的字母,使得每個字母只出現一次。需保證返回結果的字典序最小(要求不能打亂其他字元的相對位置)。
示例 1:
輸入:s = "bcabc"輸出:"abc"
示例 2:
輸入:s = "cbacdcbc"輸出:"acdb"
1 <= s.length <= 104基本思路:無重複字母且最小,理想情況下,單調遞增的字元組成的字串最小,可以考慮單調棧,刪除逆序且後面還會出現的字元,使其盡量單調遞增s 由小寫英文本母組成
//思路一
string removeduplicateletters(string s)
stackstk;
for(int i=0;i0)
stk.push(ch);
dict[ch-'a']--;
inst[ch-'a']=true;
}while(!stk.empty())
return ans;
}
//思路二
string ans="";
unordered_mapinst; //檢測是否出現過
for(int i=0;istk;
stk.push('a');
for(int i=0;iinst[stk.top()]=false;
stk.pop();
}stk.push(ch);
inst[ch]=true;
}int len=stk.size()-1;
for(int i=0;ireturn ans;
}
316 去除重複字母
給定乙個僅包含小寫字母的字串,去除字串中重複的字母,使得每個字母只出現一次。需保證返回結果的字典序最小 要求不能打亂其他字元的相對位置 示例 1 輸入 bcabc 輸出 abc 示例 2 輸入 cbacdcbc 輸出 acdb 我的 超時 class solution string removedu...
316 去除重複字母
給定乙個僅包含小寫字母的字串,去除字串中重複的字母,使得每個字母只出現一次。需保證返回結果的字典序最小 要求不能打亂其他字元的相對位置 示例 1 輸入 bcabc 輸出 abc 示例 2 輸入 cbacdcbc 輸出 acdb 分析 這道題就是,第一去重複,第二就是選擇最小的字串。去重複倒是不難,主...
316 去除重複字母
給你乙個字串 s 請你去除字串中重複的字母,使得每個字母只出現一次。需保證 返回結果的字典序最小 要求不能打亂其他字元的相對位置 注意 該題與 1081 相同 示例 1 輸入 s bcabc 輸出 abc 示例 2 輸入 s cbacdcbc 輸出 acdb 1 s.length 104 s 由小寫...