给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。
示例1:
输入: s1 = "abc", s2 = "bca" 输出: true示例2:
输入: s1 = "abc", s2 = "bad" 输出: false限制
0 <= len(s1) <= 1000 <= len(s2) <= 100本是想借助散列表的思想,但是发现好像使用的并不是很正确。
/** * @param {string} s1 * @param {string} s2 * @return {boolean} */ var CheckPermutation = function(s1, s2) { if(s1.length == s2.length){ let arr1 = new Object; let arr2 = new Object; for(let str of s1){ if(!arr1[str]){ arr1[str] = 1 }else{ arr1[str]++ } } for(let str of s2){ if(!arr2[str]){ arr2[str] = 1 }else{ arr2[str]++ } } for(let str of s2){ if(arr1[str] !== arr2[str] && (arr1[str] !== undefined || arr2[str] !== undefined)){ return false } } return true }else{ return false } };思想是查找s2中有没有一样字母,没有肯定false,有就删除,然后循环
/** * @param {string} s1 * @param {string} s2 * @return {boolean} */ var CheckPermutation = function(s1, s2) { //长度不对等,肯定不行的 if(s1.length!=s2.length){ return false; } s2 = s2.split(''); //直接循环 for(let s of s1){ if(s2.indexOf(s)==-1){ return false; }else{ s2.splice(s2.indexOf(s),1); } } return true; };