• LeetCode_排序_中等_791.自定义字符串排序


    1.题目

    给定两个字符串 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 中的所有字符都 不同

    来源:力扣(LeetCode
    链接:https://leetcode.cn/problems/custom-sort-string

    2.思路

    (1)自定义排序
    ① 使用数组 map[0…25] 来表示 a~z 在 order 中的下标,下标越小,优先级越大;
    ② 使用字符数组 chs 保存 s 中的字符。需要注意的是,为了方便后续调用 API,并进行自定义排序,此处使用封装类 Character;
    ③ 根据 map 中存储的每个字符对应的优先级,使用 lambda 表达式对字符数组 chs 进行自定义排序;
    ④ 拼接数组 chs 中的所有字符,最后得到的字符串即为答案之一,将其返回即可。

    3.代码实现(Java)

    //思路1————自定义排序
    class Solution {
        public String customSortString(String order, String s) {
            int orderLen = order.length();
            int sLen = s.length();
            //map[0...25] 表示 a~z 在 order 中的下标,下标越小,优先级越大
            int[] map = new int[26];
            for (int i = 0; i < orderLen; i++) {
                map[order.charAt(i) - 'a'] = i;
            }
            /*
                字符数组 chs 保存 s 中的字符
                此处使用封装类 Character,其目的在于方便后续调用 API,进行自定义排序
            */
            Character[] chs = new Character[sLen];
            for (int i = 0; i < sLen; i++) {
                chs[i] = s.charAt(i);
            }
            //使用 lambda 表达式进行自定义排序
            Arrays.sort(chs, (c1, c2) -> map[c1 - 'a'] - map[c2 - 'a']);
            StringBuilder builder = new StringBuilder();
            for (int i = 0; i < sLen; i++) {
                builder.append(chs[i]);
            }
            return builder.toString();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
  • 相关阅读:
    【超简单实用】Zotero 7 内置pdf背景颜色更改插推荐以及安装
    文本生成高精准3D模型,北京智源AI研究院等出品—3D-GPT
    go语言 leetcod1 两数之和
    kubectl插件管理工具krew
    【Linux 基础笔记】(一)
    firefox浏览器添加自定义搜索引擎方法
    tensorflow代码翻译成pytorch代码 -详细教程+案例
    力扣第1488题——避免洪水泛滥
    Python爬虫与数据可视化源码免费领取
    墨西哥FBA专线发货流程和注意事项有哪些
  • 原文地址:https://blog.csdn.net/weixin_43004044/article/details/127828820