1 题目
牛客网上的一道题目。
给定两个字符串s1、s2,将 s1 中的包含在 s2 中的字符翻转。
示例1
输入
"abcde","bcd"
输出
"adcbe"
说明
将'b','c','d'翻转
示例2
输入
"acbde","dc"
输出
"adbce"
说明
将'c','d'翻转
备注:
s1,s2只包含小写字母s1,s2只包含小写字母
1<=|s1|<=1e51<=∣s1∣<=1e5
1<=|s2|<=261<=∣s2∣<=26
链接:https://www.nowcoder.com/questionTerminal/fc0f14baa6b94f48bed7207f863db8d8
来源:牛客网
2 思路及源码
题目描述的不是很清晰,给的例子有很强误导性。我开始还以为是按照 s2 来反转,比如实例二中,s2 = “bcd”,所以 s1 的反转方式是 b 和 d 换位,举得例子也恰好满足这样。但其实题目的意思是,s1 中包含的 s1、s2 的公共字符,按照在 s1 中出现的顺序反转,跟 s2 的顺序毫无关系。
说一下我的思路,对 s1 从两头往中间遍历,分别找到左侧和右侧在 s2 中的字符,然后互换即可。题目其实很简单,和大家分享一下我的思路,因为看到很多解答都用到了一个额外的栈,个人感觉没有必要。