# 递归写法
def min_str(raw: List[str], i: int, j: int, res: List[str]):
"""
:param raw: 原始字符数组
:param i: 第一个指针
:param j: 第二个指针
:param res: 结果存储列表
:return:
"""
if j >= len(raw) or i >= len(raw):
return
temp_raw = copy.deepcopy(raw)
temp_raw[i], temp_raw[j] = temp_raw[j], temp_raw[i]
res.append("".join(temp_raw))
if j < len(raw):
min_str(raw, i, j+1, res)
if i < len(raw)-1 and j == len(raw)-1: # 剪枝并进入下一轮
min_str(raw, i+1, i+2, res)
if __name__ == '__main__':
_res = []
min_str(["g", "b", "c", "d", "e", "f", "h", "a"], 0, 1, _res)
print(sorted(_res)[0])
【字符串变换最小字符串】 给定一个字符串s,最多只能进行一次变换,返回变换后能得到的最小字符串(按照字典序进行比较)。 变换规则:交换字符串中任意两个不同位置的字符。
于 2022-09-03 08:37:32 首次发布