文章目录

  • 写在开头的话
  • 比较两个字符串中最大相同的字符串
  • 00. 说明和思路
  • 0.1 题目说明
  • 0.2 思路
  • 01. 最终结果
  • 写在最后的话:



这里是一段防爬虫文本,请读者忽略。
本文原创首发于CSDN,作者IDYS
博客首页:
本文链接:article/details/107825010
未经授权,禁止转载!恶意转载,后果自负!尊重原创,远离剽窃!


写在开头的话

  • 请记住:实践是掌握知识的最快方法
  • 如果你只是怀着看看的态度去快速浏览文章,而不去认认真真的把文章里面讲的任何一个知识点去实践一遍,那么你永远也掌握不了它
  • 生命不息,折腾不止!


比较两个字符串中最大相同的字符串

00. 说明和思路

0.1 题目说明

  1. 比如字符Awhoareyou,字符Bhoaoooeyouwho,那么字符A和字符B最大相同的字符为eyou
  2. 比如字符Awho,字符Bhwo,那么字符A和字符B最大相同的字符为who

所以按照上述结果的形式编写代码



0.2 思路

  1. 有两个字符串,其中字符串Acoolmangood,字符串Bbadcoolwoman
  2. 现在我们需要选出长度较小的字符串出来进行操作,那么现在这个较小的字符串为coolmangood
  3. 对于较小的字符串,coolmangood,第一轮我们从它的第一个字符c开始,首先查看字符c是否在字符串B中,发现包含在其中,然后字符c向后进一步,变成字符串co,接着再次查看co是否在字符串B中。得到结果确实也在字符B中,然后继续向前进一步变为coo,依次进行试探性查看,是否包含在B中,直到最后不包含在其中为止,得到此轮最大相同长度字符串
  4. 继续比较第2轮(第二轮是从o开始比较)、第3轮(第三轮是从第二个o开始比较),到第n轮,n取决于最小长度字符串的长度,这就是为什么要拿长度最小的字符串出来的原因
  5. 在之后的几轮中,依次得到该轮中最大的字符串,然后将该字符串和前一轮得到的最大长度字符串进行比较,如果比前一轮字符串长度要长,那么替换掉。如果字符串长度相同,那么则看这两个字符串内容是否相同。如果相同则不替换。如果不同则将它们两个存入集合


01. 最终结果

  • 代码演示
def compare_common_str(str1="", str2=""):
    a = set()   # 防止存入相同长度的相同字符串
    result_str = ""  # 存入相同长度的字符串
    if len(str1) > len(str2):
        str1, str2 = str2, str1   # 把较小长度的字符串存入 str1中,将str1 进行循环迭代,优化效率
    for i in range(len(str1)):
        sub_str = ""   # 用于试探字符串最大长度
        if str1[i] in str2:
            sub_str = str1[i]
            k = i
            while True:
                if k < len(str1) - 1:  # 如果k走到头了就停止。
                    k += 1
                    sub_str = sub_str+str1[k]   # 进一步试探是否 包含元素
                    if not sub_str in str2:
                        sub_str = sub_str[:-1]
                        break
                else:
                    break
        if len(sub_str) > len(result_str):
            a = set()
            result_str = sub_str
        elif len(result_str) == len(sub_str):  # 判断两个 字符是否相等
            if sub_str != result_str:
                a.add(result_str)
                a.add(sub_str)
    else:
        if len(a) != 0:
            return a
        else:
            return result_str

if __name__ == "__main__":
    print(compare_common_str("whoamihowwhoamihow", "whoaoohwhoamihowoamihwh oamihow,hoamihowsdfwhoamihowaaaa"))
    print(compare_common_str("wai", "iaw"))
    print(compare_common_str("coolmangood", "badcoolwoman"))
  • 运行结果
whoamihow
{'a', 'i', 'w'}
cool



写在最后的话:

  • 无论每个知识点的难易程度如何,我都会尽力将它描绘得足够细致
  • 欢迎关注我的CSDN博客,IDYS’BLOG
  • 持续更新内容:
    linux基础 | 数据通信(路由交换,WLAN) | Python基础 | 云计算
  • 如果你有什么疑问,或者是难题。欢迎评论或者私信我。你若留言,我必回复!
  • 虽然我现在还很渺小,但我会做好每一篇内容。谢谢关注!