LeetCode Swift解题记录(14)最长公共前缀

    科技2023-10-14  98

    LeetCode Swift解题记录(14)最长公共前缀

    题干解析

    编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 示例 1: 输入: [“flower”,“flow”,“flight”] 输出: “fl” 示例 2: 输入: [“dog”,“racecar”,“car”] 输出: “” 解释: 输入不存在公共前缀。 说明: 所有输入只包含小写字母 a-z 。

    个人解题:

    class Solution { func longestCommonPrefix(_ strs: [String]) -> String { var commonPre = Array<Character>() var lastStr:String = "" var firstCount = 0 var firstStr = strs[0] for i in firstStr{ commonPre.append(i) } var isSame = true while isSame == true{ if ( firstCount < firstStr.count ){ lastStr = lastStr + String(commonPre[firstCount]) firstCount = firstCount + 1 } for i in strs{//判断前缀 if (!i.hasPrefix(lastStr)){ isSame = false } } }//删除最后一个字符 return lastStr.substring(to: lastStr.index(before: lastStr.endIndex)) } }

    思路心得: 根据前缀判断,然后递加。不过这里提交LeetCode会报数字越界,正常调试没问题

    推荐解法:

    class Solution { func longestCommonPrefix(_ strs: [String]) -> String { var result = "" if strs.count > 0 { if let firstObjc = strs.first { if strs.count > 1 { let numbers = strs.sorted() let first = numbers.first! let last = numbers.last! let lastArray = Array(last) for (index, firstChar) in first.enumerated() { if lastArray[index] != firstChar { return result } result += String(firstChar) } } else { result = firstObjc } } } return result } }

    推荐评价: 没太仔细看,主要是不知道为啥自己的会越界

    Processed: 0.101, SQL: 8