判斷兩個字符串是否互為變形詞

題目

給定兩個字符串str1和str2,如果str1和str2中出現(xiàn)的字符種類一樣且每種字符出現(xiàn)的次數(shù)也一樣,那么str1和str2互為變形詞。

舉例

str1="123",str2="231",返回true。

str1="123",str2="2331",返回false。

實(shí)現(xiàn)方法

此題的兩個字符串種類和次數(shù)都一樣,只有順序不一樣,那么可以使用一個數(shù)組記錄第一個字符串每個字母的出現(xiàn)頻率次數(shù),這樣在第二個字符串中遍歷每個字符,從數(shù)組中挨個減去,如果數(shù)組最后為空了,說明兩個字符互為變形詞。

對于數(shù)組的選擇,可以利用字符的ASCII碼值。

工具方法

1 Array.prototype.fill()
2 String.prototype.charCodeAt(0)

代碼實(shí)現(xiàn)

  const isDeformation = (str1, str2) => {
    const len1 = str1.length, len2 = str2.length
     
    if (typeof str1 !== 'string' || typeof str1 !== 'string') {
       return false
    }

    if (len1 !== len2) {
       return false
    }

    const arr = new Array(256)
    arr.fill(0)
    const str1ToCharArray = str1.split('')
    const str2ToCharArray = str2.split('')

    for (let i = 0; i < len1; i++) {
      const curCharCodeAt = str1ToCharArray[i].charCodeAt(0)
      arr[curCharCodeAt]++
    }

    for (let i = 0; i< len2; i++) {
      const curCharCodeAt = str2ToCharArray[i].charCodeAt(0)
      arr[curCharCodeAt]--

      if (arr[curCharCodeAt] < 0) {
        return false
      }
    }

    return true
  }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容