怎样做网站的关键词,河北网上注册公司流程,惠州网站建设方案托管,台州网站设计外包说在前面 #x1f388;不知道大家对于算法的学习是一个怎样的心态呢#xff1f;为了面试还是因为兴趣#xff1f;不管是出于什么原因#xff0c;算法学习需要持续保持。 一、题目描述
给定两个字符串 order 和 s 。order 的所有单词都是 唯一 的#xff0c;并且以前按照一…说在前面 不知道大家对于算法的学习是一个怎样的心态呢为了面试还是因为兴趣不管是出于什么原因算法学习需要持续保持。 一、题目描述
给定两个字符串 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 中的所有字符都 不同二、思路分析
字符串排序其实是很常见的问题在平时的工作中我们也经常会遇到需要自定义的排序规则的相关需求功能实现。 这道题目的题意是说我们需要按题目给出的order字符串中的字符排序优先进行排序未在order中出现的字符串需要排在后面即我们需要将目标字符串s中包含于order字符串中的字符优先排序后面再将其他字符拼接到最后具体思路如下
统计字符串s中每一个字符出现的次数
for(let i 0; i s.length; i){map[s[i]] ? map[s[i]] : map[s[i]] 1;
}优先排序order中的字符
for(let i 0; i order.length; i){if(map[order[i]]){res order[i].repeat(map[order[i]]);delete map[order[i]];}
}省下的字符按与按顺序拼接到最后
for(const k in map){res k.repeat(map[k]);
}三、AC代码
/*** param {string} order* param {string} s* return {string}*/
var customSortString function(order, s) {let map {};for(let i 0; i s.length; i){map[s[i]] ? map[s[i]] : map[s[i]] 1;}let res ;for(let i 0; i order.length; i){if(map[order[i]]){res order[i].repeat(map[order[i]]);delete map[order[i]];}}for(const k in map){res k.repeat(map[k]);}return res;
};公众号
关注公众号『前端也能这么有趣』获取更多有趣内容。
说在后面 这里是 JYeontu现在是一名前端工程师有空会刷刷算法题平时喜欢打羽毛球 平时也喜欢写些东西既为自己记录 也希望可以对大家有那么一丢丢的帮助写的不好望多多谅解 写错的地方望指出定会认真改进 偶尔也会在自己的公众号『前端也能这么有趣』发一些比较有趣的文章有兴趣的也可以关注下。在此谢谢大家的支持我们下文再见 。