EzRealllllll 2022-06-13 12:26 采纳率: 66.7%
浏览 29
已结题

对字符串进行特殊的排列组合

写一个类,输入一个字符串和一个列表,列表包含了部分字符串字母可能的排练组合,输出包含部分中最长的组合,例如

print(longest_word_sequence("Green", {"Gn", "Gren", "Grean", "en"})) 
print(longest_word_sequence("pythonexercises", {"py", "ex", "exercises","axercises"})) #输入

Gren 
exercises #输出

字符串的排列组合还需要考虑参与排列的字母,例如apple的排列: "a", "ap", "al", "ae", "app", "apl", "ape", "ale", "appl", "appe", "aple", "apple", "p", "pp", "pl", "pe", "ppl", "ppe", "ple", "pple", "l", "le", "e", "".

我在编写的时候不知道如何实现不同字母参与的排列,比如abc,我不是很懂如何能实现,a,ab,ac这样,只能写出abc,cba等。希望能得到解答,谢谢!

  • 写回答

2条回答 默认 最新

  • 请叫我问哥 Python领域新星创作者 2022-06-13 12:33
    关注

    题目不需要列出所有的组合吧?
    不是只要找出“包含部分中最长的组合”吗?

    def is_in_s(s:str,l:str)->bool:
        s=list(s)
        for i in list(l):
            if i not in s:
                return False
            else:
                s.remove(i)
        return True
    
    def longest_word_sequence(s:str,l:set)->str:
        return max([i for i in l if is_in_s(s,i)],key=len)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月21日
  • 已采纳回答 6月13日
  • 创建了问题 6月13日

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分