判定是否互为字符重排
给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。
示例 1:
输入: s1 = "abc", s2 = "bca"
输出: true
示例 2:
输入: s1 = "abc", s2 = "bad"
输出: false
解题思路
要判断两个字符重新排列是否相等,那么他俩肯定一样长,只有长度相同才有可能相等;两个字符相等那就是里面的元素是一样的,数量也一样,可以把字符串转化为数组后进行排序,一一对应就说明两个字符串相等,但是一个一个判断又太浪费性能,可以再次把数组转化为字符串进行比较
具体步骤如下:
- 第一步:判断两个字符串长度是否一样,如果不是就返回
false
。 - 第二步:如果长度一样,就把两个字符串转化为数组。
- 第三步:把两个数组进行排序,然后再次转化为字符串进行比较,返回比较的结果。
var CheckPermutation = function(s1, s2) { if(s1.length !== s2.length){ return false }else{ let arr1 = [...s1] let arr2 = [...s2] return arr1.sort().join('') === arr2.sort().join('') } };
明天接着搞栈
知识点
- 解构赋值:
...
是ES6的解构语法的展开运算符;展开运算符用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中 sort()
方法对数组的项目进行排序。默认情况下,sort()
方法将按字母和升序将值作为字符串进行排序。join()
是将数组元素转换为字符串