返回信息流牛客上讨论的都是交换字符的方法。
有个解法是这样的。。没看懂这是啥意思。。尤其是hasUse标志位的那个用法。。
这是一条镜像帖。来源:北邮人论坛 / acm-icpc / #96257同步于 2018/8/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ACM_ICPC机器人发帖
求问: 剑指offer 28 字符串的排列
wheat
2018/8/7镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 wheat 的大作中提到: 】
: 牛客上讨论的都是交换字符的方法。
: 有个解法是这样的。。没看懂这是啥意思。。尤其是hasUse标志位的那个用法。。
: [upload=1][/upload]
这个就是标准的回溯的写法啊,你查查回溯,你说的那个交换是可以做这个题的,但是那种算法不是回溯
嗯 板凳说的也对,第一行代码是典型回溯,第二个if是在回溯基础上又避免重复字符
【 在 dxy1 (【意涵团】dxy) 的大作中提到: 】
: 这个就是标准的回溯的写法啊,你查查回溯,你说的那个交换是可以做这个题的,但是那种算法不是回溯
hasUsed[i] 很好理解,同一个字符不要用两次
hasUsed[i - 1]那段,因为chars是已经排序了的,这个条件实现了相同字符时前一个被使用了后一个才可以被使用,保证结果中相同字符之间的顺序不变。
比如输入为ccc,记为c1c2c3,生成的结果只有一个c1c2c3,不可能有c2c1c3等多个
谢谢大佬!搞懂了。和你说的一样!
【 在 w350053002 (laodongrenmin) 的大作中提到: 】
: hasUsed[i] 很好理解,同一个字符不要用两次
: hasUsed[i - 1]那段,因为chars是已经排序了的,这个条件实现了相同字符时前一个被使用了后一个才可以被使用,保证结果中相同字符之间的顺序不变。
: 比如输入为ccc,记为c1c2c3,生成的结果只有一个c1c2c3,不可能有c2c1c3等多个
谢谢!
【 在 YUANFEI (空空如也) 的大作中提到: 】
: 用来防止字符串重复的情况,比如aab的排列只有aab.aba.baa,如果没有hasUse标志位,就会出现6种,其中有重复的
递归和回溯有什么区别?递归不是也要return吗?
【 在 dxy1 (【意涵团】dxy) 的大作中提到: 】
: 这个就是标准的回溯的写法啊,你查查回溯,你说的那个交换是可以做这个题的,但是那种算法不是回溯