【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 }
复制代码

 

posted @   Wianxhlyl  阅读(118)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示