#44 同字母异序


  • 0
    administrators

    同字母异序指的是两个字符串字母种类和字母的数量相同,但是顺序可能不同。

    完成 isAnagram,接受两个字符串作为参数,返回true 或者 false 表示这两个字符串是否同字母异序。例如:

    isAnagram("anagram", "nagaram") // => return true.
    isAnagram("rat", "car") // => return false.
    

    (本题来源:github, LeetCode


  • 0

    isAnagram("rat", t = "car")
    

    感觉 t = xxx 有点多余了。


  • 0
    administrators

    @Sunjourney 这就是抄袭没抄好的结果


  • 0

    @胡子大哈

    const isAnagram = (str1, str2) => /* TODO */
    function isAnagram(str1,str2){
     let length=str1.length;
      if(length!==str2.length){
        return false;
      }
      for(let i in str1){
        let index=str2.indexOf(str1[i]);
        if(index===-1){
          return false;
        }else{
          str2=str2.split('');
          str2.splice(index,1);
          str2=str2.join('');
        }
      } 
      return true;
    }
    

    提示:Thisismylove 和 THisismylove 应该返回 false,但是本地测试没问题


  • 0
    administrators

    @小弋 把第一行去掉


  • 0

    const isAnagram = (ckL, ckR) => {
    if (ckL.length !== ckR.length) {
    return false;
    }
    let arrL = ckL.split('');
    let arrR = ckR.split('');
    for (let L of arrL) {
    for (let R = 0; R < arrR.length; R++) {
    if (L === arrR[R]) {
    arrR.splice(R, 1);
    break;
    }
    }
    }
    if (arrR.length > 0) {
    return false;
    }
    return true;
    }


  • 0

    const isAnagram = (str1, str2) => str1.split('').sort().join('') === str2.split('').sort().join('');
    

  • 0

    const isAnagram = (str1, str2) => {
            if(str1.length !== str2.length) return false
    	let o = {}
    
    	for (let i = 0; i < str1.length; i++) {
    		if (str1[i] != str2[i]) {
    			o[str1[i]] = o[str1[i]] ? o[str1[i]] + 1 : 1
    			o[str2[i]] = o[str2[i]] ? o[str2[i]] - 1 : -1
    		}
    	}
    	
    	return Object.values(o).every(d => d === 0)
    }
    
    

  • 0

    const isAnagram = (str1, str2) => {
      let strArr1 = str1.split('').sort();
      let strArr2 = str2.split('').sort();
      return str1.length === str2.length && strArr1.every((v, index) => v === strArr2[index]);
    }
    
    

  • 0

    const sortStr = (str) => str.split('').sort().join('')
    const isAnagram = (str1, str2) => sortStr(str1) === sortStr(str2)
    

  • 0

    哇!感觉自己好笨

    const isAnagram = (str1, str2) => {
      if(str1.length != str2.length){
        return false
      }
      var resultObj = {};
      var strOneArr = str1.split('');
      var strTwoArr = str2.split('');
      for(let i = 0; i<strOneArr.length;i++){
        //存入第一个
        if(resultObj[strOneArr[i]]){
          ++resultObj[strOneArr[i]];
        }else{
          resultObj[strOneArr[i]] = 1;
        }
        //取出第二个
        if(resultObj[strTwoArr[i]]){
          --resultObj[strTwoArr[i]];
        }else{
          resultObj[strTwoArr[i]] = -1;
        }
      }
      let resultObjArr = Object.keys(resultObj);
      for(let i = 0; i<resultObjArr.length;i++){
        if(resultObj[resultObjArr[i]] != 0){
          return false;
        }
      }
      return true
    }
    

登录后回复
 

与 ScriptOJ 的连接断开,我们正在尝试重连,请耐心等待