当前位置: 首页 > article >正文

机试刷题_字符串的排列【python】

题目:字符串的排列

在这里插入图片描述

from os import dup
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param str string字符串 
# @return string字符串一维数组
#
class Solution:
    def backtrack(self,res,state,choices,selected):
    	# 当状态长度等于元素数量时,记录解
        if len(state)==len(choices):
            res.append(state)
            return
        dupilcate = set()
        for i in range(len(choices)):
        	# 剪枝:不允许重复选择元素,且不允许重复选择相等元素
            if not selected[i] and choices[i] not in dupilcate:
            	 #记录选择过的值
                dupilcate.add(choices[i])
                selected[i] = True
                state  += choices[i]
                # 进行下一轮选择
                self.backtrack(res,state,choices,selected)
                # 回退:撤销选择,恢复到之前的状态
                selected[i] = False
                state = state[:-1]


    def Permutation(self , str: str) -> List[str]:
        res = []
        if len(str)==0:
            return res
        tmp = "".join(sorted(list(str)))
        self.backtrack(res,state ="",choices = tmp,selected=[False]*len(tmp))
        return res
        

http://www.kler.cn/a/548743.html

相关文章:

  • 容器运行常见数据库
  • python电影数据分析及可视化系统建设
  • 深入学习Linux命令行中的各种替换操作(命令替换、参数替换、进程替换)
  • MySQL常见错误码及解决方法(1130、1461、2003、1040、2000、1049、1062、1129、2002、1690等)
  • (萌新入门)如何从起步阶段开始学习STM32 ——2 我应该学习HAL库还是寄存器库?
  • 【自学笔记】计算机视觉基础知识点总览-持续更新
  • 使用JavaScript实现深浅拷贝
  • 单链表的概念,结构和优缺点
  • openharmony系统移植之显示驱动框架从framebuffer升级为drm(linux-5.10)
  • 【JVM系列】谈一谈JVM调优
  • 【Leetcode】解锁二分查找:突破解题瓶颈的关键技巧
  • Java和JavaScript当中的json对象和json字符串分别讲解
  • 栈的深度解析:从基础实现到高级算法应用——C++实现与实战指南
  • 清华大学×DeepSeek 使用手册 2.0:《DeepSeek如何赋能职场应用?》(文末附下载链接)
  • DeepSeek-R1论文阅读及蒸馏模型部署
  • SpringBoot:使用spring-boot-test对web应用做单元测试时如何测试Filter?
  • C++11新特性之final
  • 【吾爱出品】 视频批量分段工具
  • 物联网行业通识:从入门到深度解析
  • 深入解析SVG图片原理:从基础到高级应用