白白白白丶白 发表于 2020-8-4 12:05:07

题目:编写一个函数以在字符串数组中找到最长的公共前缀字符串。

def main(s): # 输入字符串数组
    s1 = max(s)
    s2 = min(s)
    for i in range(len(s2)):
      if s1 != s2:
            return s1[:i]


我这样写严谨吗,虽然结果是对的,答案用的是enumerate

Twilight6 发表于 2020-8-4 12:22:13



你是怎么调用函数的呢,发上来看看吧,感觉怪怪的

白白白白丶白 发表于 2020-8-4 12:38:11

Twilight6 发表于 2020-8-4 12:22
你是怎么调用函数的呢,发上来看看吧,感觉怪怪的

>>> main(['flower', 'flow', 'fly'])
'fl'
>>> main(['dog', 'racecar', 'car'])
''

就这样

Twilight6 发表于 2020-8-4 12:44:01

白白白白丶白 发表于 2020-8-4 12:38
就这样



>>> main(['flower', 'flow', 'flowery'])
None


永恒的蓝色梦想 发表于 2020-8-4 12:47:31

def func(strs, /) -> str:
    for index, chars in enumerate(zip(strs)):
      if len(set(chars)) != 1:
            return strs[:index]
    return str

永恒的蓝色梦想 发表于 2020-8-4 12:49:54

很明显你的函数是不严谨的,因为输入的字符串不一定等长,而且输入字符串完全相同不会有返回值。

白白白白丶白 发表于 2020-8-4 13:18:42

永恒的蓝色梦想 发表于 2020-8-4 12:49
很明显你的函数是不严谨的,因为输入的字符串不一定等长,而且输入字符串完全相同不会有返回值。

我感觉等不等长倒没问题,就是会没有返回值,

永恒的蓝色梦想 发表于 2020-8-4 13:22:18

白白白白丶白 发表于 2020-8-4 13:18
我感觉等不等长倒没问题,就是会没有返回值,

不等长会导致返回错误。

白白白白丶白 发表于 2020-8-4 13:27:34

永恒的蓝色梦想 发表于 2020-8-4 13:22
不等长会导致返回错误。

>>> main(['flower', 'flow', 'fly'])
'fl'
>>> main(['dog', 'racecar', 'car'])
''这俩不就是不等长的嘛

永恒的蓝色梦想 发表于 2020-8-4 13:31:45

白白白白丶白 发表于 2020-8-4 13:27


好吧,不等长有时候会不返回

白白白白丶白 发表于 2020-8-4 13:35:27

永恒的蓝色梦想 发表于 2020-8-4 13:31
好吧,不等长有时候会不返回

对就是有时候不返回,在底下再加个return s1[:i+1],试了几个都正常了,不过有点太丑了也不知道两个return合不合理

永恒的蓝色梦想 发表于 2020-8-4 13:38:07

白白白白丶白 发表于 2020-8-4 13:35
对就是有时候不返回,在底下再加个return s1[:i+1],试了几个都正常了,不过有点太丑了也不知道两个retur ...

有分支 少写了 return 才不合理

白白白白丶白 发表于 2020-8-4 13:54:01

永恒的蓝色梦想 发表于 2020-8-4 13:38
有分支 少写了 return 才不合理

对奥,谢谢
页: [1]
查看完整版本: 题目:编写一个函数以在字符串数组中找到最长的公共前缀字符串。