题目 316. 去除重复字母
参考题解 https://mp.weixin.qq.com/s/Yq49ZBEW3DJx6nXk1fMusw
先分解题目要求
题目的要求总结出来有三点:
要求一、要去重。
要求二、去重字符串中的字符顺序不能打乱
s
中字符出现的相对顺序。要求三、在所有符合上一条要求的去重字符串中,字典序最小的作为最终结果。
解题的关键
找出最小的满足 s[i]>s[i+1]s[i]>s[i+1] 的下标 ii,并去除字符 s[i]s[i]
数据结构:
boolean[] vis = new boolean[26]; //记录是否在栈内
int[] num = new int[26];
StringBuffer sb = new StringBuffer(); //也可以直接用StringBuffer模拟栈
题目:402. 移掉 K 位数字
思路:贪心策略 如果 nums[i]>nums[i+1] 删除nums[i]
class Solution {
/*维护一个单调栈
贪心策略:num[i]>num[i+