,敢教日月换新天。为有牺牲多壮志

[Swift]LeetCode14. 最长公共前缀 | Longest Common Prefix

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/9697903.html 
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

热烈欢迎,请直接点击!!!

进入博主App Store主页,下载使用各个作品!!!

注:博主将坚持每月上线一个新app!!!

Write a function to find the longest common prefix string amongst an array of strings.

If there is no common prefix, return an empty string "".

Example 1:

Input: ["flower","flow","flight"]
Output: "fl"

Example 2:

Input: ["dog","racecar","car"]
Output: ""
Explanation: There is no common prefix among the input strings.

Note:

All given inputs are in lowercase letters a-z.


编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 ""

示例 1:

输入: ["flower","flow","flight"]
输出: "fl"

示例 2:

输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。

说明:

所有输入只包含小写字母 a-z 。


16ms

复制代码
 1 class Solution {
 2     func longestCommonPrefix(_ strs: [String]) -> String {
 3         let minStr = try? strs.min(by: { $0.count < $1.count })
 4         guard var minS = minStr! else {
 5             return ""
 6         }
 7         
 8         var endIndex = minS.endIndex
 9         for str in strs {
10             if (str.hasPrefix(minS)) {
11                 continue
12             }
13             while endIndex > minS.startIndex && !str.hasPrefix(minS) {
14                 endIndex = minS.index(before: endIndex)
15                 minS = String(minS[minS.startIndex..<endIndex])
16             }
17         }
18         return minS
19     }
20 }
复制代码

20ms

复制代码
 1 class Solution {
 2        func longestCommonPrefix(_ strs: [String]) -> String {
 3         
 4         if strs.count == 0 {
 5             return ""
 6         }
 7         var prefix = strs[0]
 8         for i in 0..<strs.count {
 9             while strs[i].hasPrefix(prefix) == false {
10                 prefix = prefix.substring(to: prefix.index(before: prefix.endIndex))
11                 if prefix.isEmpty {
12                     return ""
13                 }
14             }
15         }
16         return prefix
17     }
18 }
复制代码

24ms

复制代码
 1 class Solution {
 2     func longestCommonPrefix(_ strs: [String]) -> String {
 3         guard strs.count > 0 else { return "" }
 4         var shortestPrefix = strs.min{ $0.count < $1.count }!
 5         print(shortestPrefix)
 6         for s in strs {
 7             while shortestPrefix.count > 0 , !s.hasPrefix(shortestPrefix) {
 8                 shortestPrefix.removeLast()
 9             }
10         }
11         return shortestPrefix
12     }
13 }
复制代码

28ms

复制代码
 1 class Solution {
 2     func longestCommonPrefix(_ strs: [String]) -> String {
 3 
 4         var res = ""
 5         if strs.isEmpty {
 6             
 7             return res
 8         }
 9         
10         res = strs[0]
11         
12         for i in 1..<strs.count {
13             
14             var find = Array(strs[i])
15             var current = Array(res)
16             res = ""
17             for i in 0..<find.count {
18                 
19                 if i >= current.count {
20                     break
21                 }
22                 
23                 if current[i] != find[i] {
24                     
25                     break
26                 } else {
27                     
28                     res += String(current[i])
29                 }
30             }
31             
32         }
33         
34         return res
35     }
36 }
复制代码

32ms

复制代码
 1 class Solution {
 2   func longestCommonPrefix(_ strs: [String]) -> String {
 3     guard let first = strs.first else { return "" }
 4 
 5     var currentPrefix = ""
 6     var bestPrefix = ""
 7 
 8     for letter in first { 
 9       currentPrefix.append(letter)
10 
11       for word in strs {
12         if !word.hasPrefix(currentPrefix) { 
13           return bestPrefix 
14         }
15       }
16 
17       bestPrefix = currentPrefix
18     }
19 
20     return bestPrefix                
21   }
22 }
复制代码

 

posted @   为敢技术  阅读(690)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示
哥伦布
09:09发布
哥伦布
09:09发布
3°
多云
东南风
3级
空气质量
相对湿度
47%
今天
中雨
3°/15°
周三
中雨
3°/13°
周四
小雪
-1°/6°