📅  最后修改于: 2023-12-03 15:31:45.384000             🧑  作者: Mango
在开发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程序来查找最长的公共前缀的方法。