Leetcode——20.最长公共前缀(python)

20. 最长公共前缀

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

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

示例 1:

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

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

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-common-prefix
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路1:

用列表来模拟栈来做

程序代码1:

class Solution:
    def isValid(self, s: str) -> bool:
        s = s.replace("\"","")
        length = len(s)
        stack = []
        for i in range(0, length):
            if (s[i] == '{' or s[i] == '(' or s[i] == '['):
                stack.append(s[i])
            else:
                if (len(stack) != 0):
                    tmp = stack.pop()
                    if (s[i] == '}' and tmp != "{"):
                        return False
                    if (s[i] == ')' and tmp != "("):
                        return False
                    if (s[i] == ']' and tmp != "["):
                        return False
                else:
                    return False
        if (len(stack) != 0):
            return False
        return True
 
s = Solution()
print(s.isValid(input()))

解题思路2:

用字典类模拟哈希表来做

程序代码2:

class Solution:
    def isValid(self, s: str) -> bool:
        s = s.replace("\"", "")
        dic = {'(': ')', '[': ']', '{': '}'}
        stack = []
        for i in s:
            if i in dic.keys():
                stack.append(i)
            elif i in dic.values():
                if len(stack) == 0 or dic.get(stack[-1]) != i:
                    return False
                else:
                    stack.pop()
        if len(stack) == 0:
            return True
        else:
            return False
 
s = Solution()
print(s.isValid(input()))

你可能感兴趣的:(Leetcode——20.最长公共前缀(python))