LeetCode—316 Remove Duplicate Letters
来源:互联网 发布:九二五网络 编辑:程序博客网 时间:2024/06/15 22:02
思路:建立26个List存储每个字母的位置,然后每次读取一个字母出来,并且维护这26个list
public class Solution {List<List<Integer>> totalList=new ArrayList<List<Integer>>();int index=-1; public String removeDuplicateLetters(String s) { if (s==null||s.length()==0) {return "";} char[] chars=s.toCharArray(); for (int i = 0; i < 26; i++) { List<Integer> list=new ArrayList<Integer>(); totalList.add(list);} for (int i = 0; i < chars.length; i++) {int k=chars[i]-97;totalList.get(k).add(i);} int count=0; for (int i = 0; i < 26; i++) {if (totalList.get(i).size()!=0) {count++;}} char[] ans=new char[count]; for (int i = 0; i < count; i++) {ans[i]=f();} return String.valueOf(ans); } public char f(){ int min=Integer.MAX_VALUE; for (int i = 0; i < 26; i++) { if (totalList.get(i).size()!=0) {int k=totalList.get(i).get(totalList.get(i).size()-1);if (k<min) {min=k;}}} for (int i = 0; i < 26; i++) { if (totalList.get(i).size()!=0) { int val=totalList.get(i).get(0); if (val<=min&&val>index) { totalList.set(i, new ArrayList<Integer>()); index=val; for (int j = 0; j < 26; j++) {if (totalList.get(j).size()!=0) {List<Integer> list=totalList.get(j);for (int k = 0; k < list.size();) {if (list.get(0)<index) {list.remove(0);}else {break;}}}} return (char)(i+97); }}}return 0; }}
0 0
- LeetCode—316 Remove Duplicate Letters
- [leetcode-316]Remove Duplicate Letters
- [LeetCode 316] Remove Duplicate Letters
- LeetCode 316: Remove Duplicate Letters
- leetcode(316):Remove Duplicate Letters
- LeetCode #316: Remove Duplicate Letters
- Leetcode (316) Remove Duplicate Letters
- LeetCode(316)Remove Duplicate Letters
- leetcode Remove Duplicate Letters
- leetcode: Remove Duplicate Letters
- LeetCode Remove Duplicate Letters
- 《leetCode》:Remove Duplicate Letters
- Leetcode: Remove Duplicate Letters
- leetcode--Remove Duplicate Letters
- [Leetcode]Remove Duplicate Letters
- 【Leetcode】Remove Duplicate Letters
- 【leetCode】 Remove Duplicate Letters
- [LeetCode]Remove Duplicate Letters
- Linux驱动开发中s3c2410关于gpio的内核导出函数的解读
- 德雷福斯(Dreyfus)技能获取模型
- tomcat7性能优化
- 使用指针插入元素
- 黑马程序员---Java基础---数组
- LeetCode—316 Remove Duplicate Letters
- html5+exif.js+canvas实现手机端照片上传预览、压缩、旋转功能
- 使用bootstrap tooltip控件动态修改提示内容
- 二叉排序树(B树)和平衡树(AVL树)
- iOS开发之网络监听
- Hibernate主键生成策略
- QQ第三方登录
- 指针交换两数组最大值
- 在自定义drawable中setBackground(drawable)和setImageDrawable(drawable)的不同