**题目:**给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。
示例 1:
输入: s1 = “abc”, s2 = “bca” 输出: true
示例 2:
输入: s1 = “abc”, s2 = “bad” 输出: false
说明:
0 <= len(s1) <= 100 0 <= len(s2) <= 100
解题思路:
判定字符串重排后,是否与另一个字符串相等,等价于,判定这个字符串的元素在另一个中是否存在。
1、若两个字符串的长度不想等,那么肯定是false
2、在长度相等的情况下,for循环判定字符串s2的元素在s1中是否存在
如果不存在,直接返回false
如果存在,则需要将数组s1中对应下标位置的元素删除,避免后续查找重复
第二种思路,将每个字符串split划分成字符数组后,sort方法进行排序,转化成字符串后,判定是否相等,直接返回。
js实现:
/**
* @param {string} s1
* @param {string} s2
* @return {boolean}
*/
var CheckPermutation = function(s1, s2) {
if(s1.length!=s2.length){
return false;
}
// s1Arr=s1.split('');
// s2Arr=s2.split('');
// for(var i=0;i<s2Arr.length;i++){
// if(s1Arr.indexOf(s2Arr[i])==-1){
// return false;
// break;
// } else{//不等于负数,说明找到了,找到后,需要将对应位置的元素删除,避免重复
// s1Arr.splice(s1Arr.indexOf(s2Arr[i]),1);
// }
// }
// return true;
return s1.split('').sort().toString===s2.split('').sort().toString;
};