Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 2a27607

Browse files
committed
feat: add longest common prefix
1 parent 538320d commit 2a27607

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed

‎js/longest_common_prefix.js‎

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
/*
2+
* @Author: Chacha
3+
* @Date: 2022年05月20日 23:43:32
4+
* @Last Modified by: Chacha
5+
* @Last Modified time: 2022年05月20日 23:44:48
6+
*/
7+
8+
/**
9+
* 来源:https://leetcode-cn.com/problems/longest-common-prefix/
10+
*
11+
* 14. 最长公共前缀
12+
*
13+
* 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。
14+
*
15+
* 示例 1:
16+
* 输入:strs = ["flower","flow","flight"]
17+
* 输出:"fl"
18+
*
19+
* 示例 2:
20+
* 输入:strs = ["dog","racecar","car"]
21+
* 输出:""
22+
* 解释:输入不存在公共前缀。
23+
*
24+
*/
25+
// 横向扫描 也可以想起 版本比较的算法题,第一个和第二个比较,再拿结果和第三个比较
26+
const longestCommonPrefix = (strs) => {
27+
if (strs.length === 0) {
28+
return "";
29+
}
30+
31+
let prefix = strs[0];
32+
const len = strs.length;
33+
const getPrevfix = (str1, str2) => {
34+
if (str1.length > str2.length) {
35+
return getPrevfix(str2, str1);
36+
}
37+
38+
let i = 0;
39+
let substrLen = 0;
40+
const len = str1.length;
41+
42+
while (i < len) {
43+
if (str1[i] === str2[i]) {
44+
substrLen++;
45+
} else {
46+
break;
47+
}
48+
i++;
49+
}
50+
51+
return str1.substr(0, substrLen);
52+
};
53+
54+
for (let i = 1; i < len; i++) {
55+
prefix = getPrevfix(prefix, strs[i]);
56+
57+
if (prefix === "") {
58+
return "";
59+
}
60+
}
61+
62+
return prefix;
63+
};
64+
65+
console.log(longestCommonPrefix(["flower", "flow", "flight"]));

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /