【1113】
791. 自定义字符串排序
中等
相关企业
给定两个字符串 order
和 s
。order
的所有单词都是 唯一 的,并且以前按照一些自定义的顺序排序。
对 s
的字符进行置换,使其与排序的 order
相匹配。更具体地说,如果在 order
中的字符 x
出现字符 y
之前,那么在排列后的字符串中, x
也应该出现在 y
之前。
返回 满足这个性质的 s
的任意排列 。
示例 1:
输入: order = "cba", s = "abcd" 输出: "cbad" 解释: “a”、“b”、“c”是按顺序出现的,所以“a”、“b”、“c”的顺序应该是“c”、“b”、“a”。 因为“d”不是按顺序出现的,所以它可以在返回的字符串中的任何位置。“dcba”、“cdba”、“cbda”也是有效的输出。
示例 2:
输入: order = "cbafg", s = "abcd" 输出: "cbad"
提示:
1 <= order.length <= 26
1 <= s.length <= 200
order
和s
由小写英文字母组成order
中的所有字符都 不同
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 class Solution { 2 public String customSortString(String order, String s) { 3 int[] freq = new int[26]; 4 for (int i = 0; i < s.length(); ++i) { 5 char ch = s.charAt(i); 6 ++freq[ch - 'a']; 7 } 8 StringBuilder ans = new StringBuilder(); 9 for (int i = 0; i < order.length(); ++i) { 10 char ch = order.charAt(i); 11 while (freq[ch - 'a'] > 0) { 12 ans.append(ch); 13 freq[ch - 'a']--; 14 } 15 } 16 for (int i = 0; i < 26; ++i) { 17 while (freq[i] > 0) { 18 ans.append((char) (i + 'a')); 19 freq[i]--; 20 } 21 } 22 return ans.toString(); 23 24 25 } 26 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~