13. 罗马数字转整数(python练习)

          QQ:3020889729 小蔡

如下解题思路,仅表示我的作题思路或引荐别人的方法——若有引用我会标注出来的python

题目+思路

题目

编写一个函数来查找字符串数组中的最长公共前缀。
若是不存在公共前缀,返回空字符串 “”。
测试样例:
输入: [“flower”,“flow”,“flight”]
输出: “fl”web

思路

  1. 首先明确字符串数组——也就是list,若是不存在一个字符串元素,咱们就直接返回空字符串~
  2. 仅含有一个字符串,那么直接输出这个字符串~
  3. 排除这些状况后,先选取第一个元素字符串做为公共字符字段的标准,用来与第二个元素进行判别,若是直接相比不相等,那么字符段标准就减去最后一个字符,在进行比较,不相等就依次减下去——直到剩下的字符段标准在第二个字段中存在,才进行下一个字符串元素的最长公共前缀的判断——只要有一个没有公共字符串,那么就直接返回""
  4. 以上方法得以实现——是由于明确了数据仅存在前缀相等,若是数据出现:oxflxx,flow,oflxd;那么你用这样的方式,获取的仅仅都含有fl字段,但并不是前缀了哦(这上边的这种方法算是一种为了解题的捷径吧

代码实现(思路体现为:逐个元素查找公共字段_有借鉴)

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
             if len(strs) == 0:
                 return ""
             if len(strs) == 1:
                 return strs[0]
                 
             first_jg = strs[0]  # 获取首元素做为最开始的公共字段
             
             for i in range(1, len(strs)):  # 进行字段查找遍历
                 while strs[i].find(first_jg ) != 0:  # 当找到最长公共字段后就会破出
                     first_jg = first_jg [:-1]  # 不然减去最后一个字符!!!
             return ptspr

专一于查找前缀的代码实现(未能优化~时间有限)

我把思路主要放在代码中:
简要的思路是:先判断元素的最小字符串长度,而后再进行前缀的判断——为了得到公共字符,就取第一个字符串的每个元素做为标准,依次进行判断,知足的字符链接起来,返回就能够了——可是只要遇到一个不一样就应该退出遍历了~~~数组

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
         zero = 0  # 查找数组的元素的字符串最短长度
         outpust = ''  # 输出的公共字段
         juge = ''  # 某一个肯定的公共字符
         counts = 0  # 做为该公共字符是否为有效公共字符
         for i in range(0, len(strs)):
             zero = max(zero, len(strs[i]))  # 先获取元素最大长度
         for i in range(0, len(strs)):
             zero = min(zero, len(strs[i]))ha  # 再由最大长度获取最小长度
         for j in range(0, zero):  # 根据最小长度为依据,进行遍历可能的公共前缀字符
             counts = 0
             for i in range(0, len(strs)):
                 if i == 0:
                     juge = strs[i][j]  # 每次数组遍历时,把第一个元素的j位字符做为依据进行后边的判断
                 else:
                     if juge == strs[i][j]:
                         counts += 1  # 每一次判断字符相等,就记一次数
                     else:
                         counts = -2  # 结束公共前缀字符的判断
                         break  # 遇到一个不相等就破出循环
             if counts == (len(strs) - 1):  # 公共前缀字符的合成
                 outpust += juge  # 加上知足的字符
             elif counts == -2:  # 提早破出条件
                 break
         return outpust