316 去除重複字母

2021-10-12 00:22:11 字數 1061 閱讀 2674

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 由小寫...