Monica_MTF 2023-01-17 22:25 采纳率: 73.9%
浏览 39
已结题

拼接字符串删除重复部分

函数 main() 接收两个任意长度的 字符串s1和s2 ,要求把这两个字符串先后拼接起来成为一个长字符串,在拼接时 删除s1尾部与 s2头部 最长的公共字串,重叠部分只保留一份,最后返回拼接结果字符串.
例如,参数分别为 'abcdefg' 和 'fghik'时返回 'abcdefghik'.
(不引用第三方库)
(感觉至少有3种解法)
倒序法:

img

集合去重法:

img

  • 写回答

3条回答 默认 最新

  • starlight_2007 2023-01-18 00:07
    关注

    可以使用如下代码实现要求的功能:

    def main(s1,s2):
        if len(s1) > len(s2):
            s1_ = s1[len(s1)-len(s2):]
            s2_ = s2
        elif len(s1) < len(s2):
            s2_ = s2[:len(s1)]
            s1_ = s1
        else:
            s1_ = s1
            s2_ = s2
        for i in range(1,len(s1)+1):
            if s1_[len(s1_) - i:] == s2_[:i]:
                delete = s2_[:i]
        s2 = s2.replace(delete,'',1)
        return s1 + s2
    

    答题版效果图:

    img

    当然了,如果抛开题目,您也可以使用下面优化过的的函数组:

    class Solution:
        def main(s1:str,s2:str):
            delete = None
            if len(s1) > len(s2):
                s1_ = s1[len(s1)-len(s2):]
                s2_ = s2
            elif len(s1) < len(s2):
                s2_ = s2[:len(s1)]
                s1_ = s1
            else:
                s1_ = s1
                s2_ = s2
            for i in range(1,len(s1)+1):
                if s1_[len(s1_) - i:] == s2_[:i]:
                    delete = s2_[:i]
            if delete == None:
                return '两字符串无公共部分。'
            s2 = s2.replace(delete,'',1)
            return s1 + s2
    def inter():
        s1 = input('输入字符串1:')
        s2 = input('输入字符串2:')
        result = Solution.main(s1,s2)
        print('结果是:',result,'\n')
    while True:
        inter()
    

    实用版效果图:

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月27日
  • 已采纳回答 1月19日
  • 创建了问题 1月17日

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测