算法:最长公共前缀(横向扫描和纵向扫描)
2023-12-13 04:55:26
?横向扫描?时间复杂度?O(m * n),空间复杂度O(1)
/**
* @param {string[]} strs
* @return {string}
*/
var longestCommonPrefix = function(strs) {
// 先把第一个字符串拿出来
let str = strs[0]
// 用 startsWith 检查数组中每个字符串是否以当前字符串为前缀
while(!strs.every(item=>item.startsWith(str))){
// 如果不是的话就将当前字符串的末尾字符扔掉
str = str.slice(0,str.length-1)
}
return str ===''?'':str
};
?纵向扫描?时间复杂度?O(m * n),空间复杂度O(1)
/**
* @param {string[]} strs
* @return {string}
*/
var longestCommonPrefix = function(strs) {
let prefix = ''
// 先把第一个字符串拿出来
let str = strs[0]
// 外层循环先从第一个字符串的第一个字符开始
for(let i=0; i<= str.length; i++){
let char = str[i]
if (strs.length === 0) {
return '';
}
if(strs.length==1){
return strs[0]
}
// 内层循环要从当前字符串的下一个字符串进行比对
for(let j=1; j<= strs.length-1; j++){
// 如果下一个字符串的第i个字符不等于当前字符串的第i个字符
// 或者当前字符串的长度大于下一个字符串的长度则终止循环
if(strs[j][i] !== char || i >= strs[j].length){
return prefix
}
}
// 符合条件的字符和当前字符拼接
prefix += char
}
return prefix
};
文章来源:https://blog.csdn.net/sdhshsjh/article/details/134896507
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!