Skip to content

Commit 9531581

Browse files
committed
feat: add solution of Longest Common Prefix(014) with kotlin.
1 parent ef918ba commit 9531581

File tree

7 files changed

+58
-1
lines changed

7 files changed

+58
-1
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
| [007][007-question] | [Reverse Integer][007-tips] | [][007-java] | [][007-js] | [][007-kotlin] |
2929
| [009][009-question] | [Palindrome Number][009-tips] | [][009-java] | | [][009-kotlin] |
3030
| [013][013-question] | [Roman to Integer][013-tips] | [][013-java] | | [][013-kotlin] |
31-
| [014][014-question] | [Longest Common Prefix][014-tips] | [][014-java] | | |
31+
| [014][014-question] | [Longest Common Prefix][014-tips] | [][014-java] | | [][014-kotlin] |
3232
| [020][020-question] | [Valid Parentheses][020-tips] | [][020-java] | | |
3333
| [021][021-question] | [Merge Two Sorted Lists][021-tips] | [][021-java] | | |
3434
| [026][026-question] | [Remove Duplicates from Sorted Array][026-tips] | [][026-java] | | |
@@ -452,4 +452,5 @@
452452
[007-kotlin]: ./src/_007/kotlin/Solution.kt
453453
[009-kotlin]: ./src/_009/kotlin/Solution.kt
454454
[013-kotlin]: ./src/_013/kotlin/Solution.kt
455+
[014-kotlin]: ./src/_014/kotlin/Solution.kt
455456
[771-kotlin]: ./src/_771/kotlin/Solution.kt

lib/kotlin-reflect.jar

146 KB
Binary file not shown.

lib/kotlin-stdlib-sources.jar

-60.9 KB
Binary file not shown.

lib/kotlin-stdlib.jar

58.3 KB
Binary file not shown.

lib/kotlin-test.jar

1.97 KB
Binary file not shown.

src/_014/kotlin/Solution.kt

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package _014.kotlin
2+
3+
/**
4+
* @author relish
5+
* @since 2018/04/09
6+
*/
7+
class Solution {
8+
fun longestCommonPrefix(strs: Array<String>): String {
9+
if (strs.isEmpty()) return ""
10+
var ret = ""
11+
for (i in 0 until strs[0].length) {
12+
val ch = strs[0][i]
13+
for (str in strs) {
14+
if (str.length <= i) return ret
15+
if (ch != str[i]) return ret
16+
}
17+
ret += ch
18+
}
19+
return ret
20+
}
21+
}
22+
23+
fun main(args: Array<String>) {
24+
val strs = Array(5, { "" })
25+
strs[0] = "abcdefg"
26+
strs[1] = "abcdfefg"
27+
strs[2] = "abcdgefg"
28+
strs[3] = "abcddefg"
29+
strs[4] = "abce"
30+
31+
println(Solution().longestCommonPrefix(strs))
32+
}

tips/014/README.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ Write a function to find the longest common prefix string amongst an array of st
1111

1212
题意是让你从字符串数组中找出公共前缀,我的想法是找出最短的那个字符串的长度 `minLen`,然后在 `0...minLen` 的范围比较所有字符串,如果比较到有不同的字符,那么直接返回当前索引长度的字符串即可,否则最后返回最短的字符串即可。
1313

14+
java:
1415
```java
1516
class Solution {
1617
public String longestCommonPrefix(String[] strs) {
@@ -27,6 +28,29 @@ class Solution {
2728
}
2829
```
2930

31+
与java的解法思路大致相同, 不过少了`找出最短的那个字符串的长度 minLen`这个环节。
32+
我直接假定字符串数组里的第一个字符串的长度是最短的,->`for (i in 0 until strs[0].length) {`
33+
后面在遍历时遇到长度小于等于index的字符串时,直接返回结果.->`if (str.length <= i) return ret`
34+
(也有可能在此之前就返回了结果)。->`if (ch != str[i]) return ret`
35+
kotlin:
36+
```kotlin
37+
class Solution {
38+
fun longestCommonPrefix(strs: Array<String>): String {
39+
if (strs.isEmpty()) return ""
40+
var ret = ""
41+
for (i in 0 until strs[0].length) {
42+
val ch = strs[0][i]
43+
for (str in strs) {
44+
if (str.length <= i) return ret
45+
if (ch != str[i]) return ret
46+
}
47+
ret += ch
48+
}
49+
return ret
50+
}
51+
}
52+
```
53+
3054

3155
## 结语
3256

0 commit comments

Comments
 (0)