删除多余的字符得到字典序最小的字符串
2021/10/20 23:40:52
本文主要是介绍删除多余的字符得到字典序最小的字符串,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
链接
给一个全是小写字母的字符串str,删除多余字符,使得每种字符只保留一个,并且让最终结果字符串字典序最小。
import java.util.Scanner; public class Main { private static String solve(char[] str) { if (str == null || str.length == 0) { return ""; } int[] hash = new int[256]; int n = str.length; for (int i = 0; i < n; ++i) { hash[str[i] - 'a']++; } int l = 0, r = 0; StringBuilder ret = new StringBuilder(); while (r < n) { /** * 已删除或未包含所有字符 */ if (hash[str[r] - 'a'] == -1 || --hash[str[r] - 'a'] != 0) { r++; } else { /** * 窗口内最小字符 */ int minIndex = l; for (int i = l; i <= r; ++i) { if (str[i] < str[minIndex]) { minIndex = i; } } ret.append(str[minIndex]); /** * 还原 */ for (int i = minIndex + 1; i <= r; ++i) { if (hash[str[i] - 'a'] != -1) { hash[str[i] - 'a']++; } } l = minIndex + 1; r = minIndex + 1; } } return ret.toString(); } public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNext()) { String s = in.next(); System.out.println(solve(s.toCharArray())); } } }
这篇关于删除多余的字符得到字典序最小的字符串的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-11有哪些好用的家政团队管理工具?
- 2025-01-11营销人必看的GTM五个指标
- 2025-01-11办公软件在直播电商前期筹划中的应用与推荐
- 2025-01-11提升组织效率:上级管理者如何优化跨部门任务分配
- 2025-01-11酒店精细化运营背后的协同工具支持
- 2025-01-11跨境电商选品全攻略:工具使用、市场数据与选品策略
- 2025-01-11数据驱动酒店管理:在线工具的核心价值解析
- 2025-01-11cursor试用出现:Too many free trial accounts used on this machine 的解决方法
- 2025-01-11百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide
- 2025-01-11不得不了解的高效AI办公工具API