美文网首页
判断两个字符串是否互为变形词

判断两个字符串是否互为变形词

作者: 樱木夜访流川枫 | 来源:发表于2018-12-07 23:30 被阅读0次

    题目

    给定两个字符串str1和str2,如果str1和str2中出现的字符种类一样且每种字符出现的次数也一样,那么str1和str2互为变形词。

    举例

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

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

    实现方法

    此题的两个字符串种类和次数都一样,只有顺序不一样,那么可以使用一个数组记录第一个字符串每个字母的出现频率次数,这样在第二个字符串中遍历每个字符,从数组中挨个减去,如果数组最后为空了,说明两个字符互为变形词。

    对于数组的选择,可以利用字符的ASCII码值。

    工具方法

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

    代码实现

      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
      }
    

    相关文章

      网友评论

          本文标题:判断两个字符串是否互为变形词

          本文链接:https://www.haomeiwen.com/subject/zjrfhqtx.html