在JavaScript中检查两个字符串是否是彼此的字谜。这里使用什么逻辑?

时间:2016-02-02 04:06:57

标签: html css anagram

有人可以在这里帮助解释JavaScript代码中使用的逻辑吗?

下面的代码检查两个字符串是否是彼此的字谜,但我不理解用于检查字符串的方法。

感谢。

<script type="text/javascript">
$(document).ready(function() {

    var anagram = function(str1, str2){
    if (str1.length !== str2.length) {
        return false;
    }

    var sortstr1 = str1.split('').sort().join('');
    var sortstr2 = str2.split('').sort().join('');

    return (sortstr1 === sortstr2);
}

    $('.AnagramChecker').on('click', function(e) {
        e.preventDefault();
        if($('#string1').val() == '') {
            $('#string1').addClass('error');
            if($('#string2').val() == '') {
                $('#string2').addClass('error');
            }
            $('.results').empty();
            $('.results').hide();
        } else {
            $('#string1').removeClass('error');
            if($('#string2').val() == '') {
                $('#string2').addClass('error');
                $('.results').empty();
                $('.results').hide();
            } else {
                $('#string2').removeClass('error');
                var isAnagram = anagram($('#string1').val(), $('#string2').val());
                $('#string1').val('');
                $('#string2').val('')
                $('.results').show();
                $('.results').empty().append('Anagram is: ' + isAnagram);
            }
        }
    });
});
</script>

3 个答案:

答案 0 :(得分:3)

两个字符串都被拆分为各个字符的数组,然后按字母顺序排序并再次连接成字符串。然后比较字符串,如果它们是相同的,则是彼此的字谜。

答案 1 :(得分:0)

{0: [1], 1: [0], 2: [2], 3: [1, 2], 4: [3], 5: [2]}

答案 2 :(得分:0)

function compare(a1,a2){
  if(a1.length != a2.length){
    return false
  }
  var f1 = {}, f2 ={};

  for(var a of a1){
    f1[a] = ++f1[a] || 1
  }
  for(var a of a2){
    f2[a] = ++f2[a] || 1
  }

  for(var key in f1){
    if(!(key in f2)){
      return false
    }
    if(f1[key] != f2[key]) {
      return false

    }
  }

  return true

}
相关问题