×
  • Web前端首页
  • Javascript
  • Javascript笔试题【多种方法】:给定两个字符串,找出他们之间共有字符的个数

Javascript笔试题【多种方法】:给定两个字符串,找出他们之间共有字符的个数

作者:Terry2023.09.22来源:Web前端之家浏览:1656评论:0
关键词:JavaScript

有同学在群里问了个问题,笔试的时候遇到一个问题:在Javascript里,给定两个字符串,找出他们之间共有字符的个数。

分析

首先遇到这个题目,不要慌,像这种题目,考察的问题就是遍历和过滤的知识点,我们可以在大脑里回顾下思路。今天小编给大家分享一些方法,参考下吧。

方案

我们这里列举多种方案来分析。

1、Set数据结构

可以使用JavaScript中的Set数据结构来解决这个问题。首先,将第一个字符串转换为Set对象,然后遍历第二个字符串的每个字符,检查是否在Set中存在。如果存在,则将其从Set中删除,并且共有字符的个数加1。最后返回共有字符的个数。

以下是使用JavaScript实现的代码示例:

function findCommonChars(str1, str2) {
  let set = new Set(str1);
  let count = 0;

  for (let char of str2) {
    if (set.has(char)) {
      set.delete(char);
      count++;
    }
  }

  return count;
}

// 示例用法
console.log(findCommonChars("abcde", "cdefg")); // 输出:3

在上面的示例中,findCommonChars函数接受两个字符串作为参数,并返回共有字符的个数。在示例用法中,字符串"abcde"和"cdefg"之间共有3个字符:"c"、"d"和"e"。因此,输出为3。

2、嵌套遍历

对两个字符串进行遍历,然后查找相同的匹配。代码如下:

function countCommonChars(str1, str2) {
    let count = 0;
    for (let i = 0; i < str1.length; i++) {
        for (let j = 0; j < str2.length; j++) {
            if (str1[i] === str2[j]) {
                count++;
                break;
            }
        }
    }
    return count;
}

// 测试
console.log(countCommonChars('hello', 'world')); // 2
console.log(countCommonChars('javascript', 'python')); // 3
console.log(countCommonChars('abc', 'xyz')); // 0

这个方法比较常规。

3、使用ES6中的new Set

这种方法是最简单的,代码几行搞定,我们使用includes方法进行判断,然后使用filter进行过滤,最后通过new Set找到共有字符的个数size。

const str1 = "hello",
    str2 = "world",
    commonChars = new Set([...str1].filter(char => str2.includes(char))),
    count = commonChars.size;
console.log(commonChars);
console.log(count);

这里可以说明下,可能有些同学对于size不熟悉,大家可以看到先用console打印出

console.log(commonChars);

的记录,然后看到:

image.png

然后就可以看到size属性了,是不是很清晰了。

总结

关于这些方法,小编是极力推荐第三种的,因为简便,代码量又少。如果您还有更好的方法,也可以留言。

您的支持是我们创作的动力!
温馨提示:本文作者系Terry ,经Web前端之家编辑修改或补充,转载请注明出处和本文链接:
https://jiangweishan.com/article/twowored124234.html

网友评论文明上网理性发言 已有0人参与

发表评论: