📌  相关文章
📜  Javascript 程序通过单词匹配来查找最长的公共前缀(1)

📅  最后修改于: 2023-12-03 15:31:45.384000             🧑  作者: Mango

Javascript程序通过单词匹配来查找最长的公共前缀

在开发Web应用或移动应用时,常常需要进行字符串比较、匹配等操作,其中最长公共前缀是其中很重要的一个操作。那么该如何通过Javascript程序来实现查找最长公共前缀呢?

准备工作

在编写代码之前,我们必须要明确程序的输入和输出。程序的输入是一个字符串数组,输出是这些字符串的最长公共前缀。

/**
 * 返回字符串数组的最长公共前缀
 *
 * @param {string[]} strs - 输入字符串数组
 * @returns {string} 最长公共前缀
 */
function longestCommonPrefix(strs) {
  // 在此处编写代码
}
正式编写代码

接下来,我们开始正式编写程序。我们可以选择使用字符串的charCodeAt方法来比较字符串的每一个字符是否相等,如若相等,则将该字符添加到结果字符串中。

function longestCommonPrefix(strs) {
  // 如果输入为空,则直接返回空字符串
  if (strs.length === 0) {
    return '';
  }

  // 初始化结果字符串为第一个字符串
  let ans = strs[0];

  // 遍历字符串数组
  for (let i = 1; i < strs.length; i++) {
    let j = 0;

    // 比较字符串的每一个字符是否相等
    while (j < ans.length && j < strs[i].length && ans.charCodeAt(j) === strs[i].charCodeAt(j)) {
      j++;
    }

    // 更新最长公共前缀
    ans = ans.substring(0, j);
  }

  return ans;
}
测试代码

最后,我们来编写测试代码,确保程序的正确性。

const testCases = [
  {
    input: ['flower', 'flow', 'flight'],
    output: 'fl'
  },
  {
    input: ['dog', 'racecar', 'car'],
    output: ''
  },
  {
    input: ['abc'],
    output: 'abc'
  },
  {
    input: ['a', 'a', 'b'],
    output: ''
  }
];

for (const testCase of testCases) {
  const inputStrs = testCase.input;
  const expectedOutput = testCase.output;
  const actualOutput = longestCommonPrefix(inputStrs);

  console.log(`Input: ${JSON.stringify(inputStrs)}; Expected Output: ${expectedOutput}; Actual Output: ${actualOutput}`);
}
完整代码

完整代码如下所示:

/**
 * 返回字符串数组的最长公共前缀
 *
 * @param {string[]} strs - 输入字符串数组
 * @returns {string} 最长公共前缀
 */
function longestCommonPrefix(strs) {
  // 如果输入为空,则直接返回空字符串
  if (strs.length === 0) {
    return '';
  }

  // 初始化结果字符串为第一个字符串
  let ans = strs[0];

  // 遍历字符串数组
  for (let i = 1; i < strs.length; i++) {
    let j = 0;

    // 比较字符串的每一个字符是否相等
    while (j < ans.length && j < strs[i].length && ans.charCodeAt(j) === strs[i].charCodeAt(j)) {
      j++;
    }

    // 更新最长公共前缀
    ans = ans.substring(0, j);
  }

  return ans;
}

const testCases = [
  {
    input: ['flower', 'flow', 'flight'],
    output: 'fl'
  },
  {
    input: ['dog', 'racecar', 'car'],
    output: ''
  },
  {
    input: ['abc'],
    output: 'abc'
  },
  {
    input: ['a', 'a', 'b'],
    output: ''
  }
];

for (const testCase of testCases) {
  const inputStrs = testCase.input;
  const expectedOutput = testCase.output;
  const actualOutput = longestCommonPrefix(inputStrs);

  console.log(`Input: ${JSON.stringify(inputStrs)}; Expected Output: ${expectedOutput}; Actual Output: ${actualOutput}`);
}

以上就是通过Javascript程序来查找最长的公共前缀的方法。