欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > 6.7-leetcodeT3170

6.7-leetcodeT3170

2025/9/21 22:53:00 来源:https://blog.csdn.net/m0_62404686/article/details/148495169  浏览:    关键词:6.7-leetcodeT3170

题目:

算法分析:

单调栈 + 排序应用

考察删除*和其前面的最小字典的字符,要使得剩余的字符字典序最小,考虑删除的字符的位置: 假设删除的字符为c

1.如果删除最前面的c 整体的字符串字典序应该最大

2. 如果删除最后面的c 整体的字符串字典序最大

因此算法的整体思路:

从左到右遍历 s,用 26 个栈记录遍历过的每种字母的下标。

遇到 *,弹出最小字母栈(第一个非空栈)的栈顶。

最后把剩余下标对应的字母按顺序串起来,即为答案。

 代码:

class Solution {public String clearStars(String s) {// 建立26个栈List<Integer>[] stks = new  ArrayList[26];Arrays.setAll(stks, i -> new ArrayList<>());int n = s.length();for(int i = 0; i < n; i++) {char c = s.charAt(i);if(c != '*') {stks[c - 'a'].add(i);} else {for(List<Integer> stk: stks) {if(!stk.isEmpty()) {stk.removeLast();break;}} }}List<Integer> idx = new ArrayList<>();for(List<Integer> stk: stks) {idx.addAll(stk);}Collections.sort(idx);StringBuilder sb = new StringBuilder();for(int i: idx) {sb.append(s.charAt(i));}return sb.toString();}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词