C++代码实现:
【华为OD】C卷真题 100%通过:字符串变换最小字符串 C/C++代码实现【思路+代码】-CSDN博客
题目描述:
给定一个字符串s,最多只能进行一次变换,返回变换后能得到的最小字符串(按照字典序进行比较)。
变换规则:交换字符串中任意两个不同位置的字符。
一串小写字母组成的字符串s
输出描述
按照要求进行变换得到的最小字符串
示例1
输入输出示例仅供调试,后台判题数据一般不包含示例
输入
abcdef
输出
abcdef
说明
abcdef已经是最小字符串,不需要交换
示例2
输入输出示例仅供调试,后台判题数据一般不包含示例
输入
bcdefa
输出
acdefb
说明
a和b进行位置交换,可以等到最小字符串
s是都是小写字符组成
1<=s.length<=1000
986
+---+
3 | | ++ + +---|
| | | 3 + 6 + | + | +
| + | | + + + | + | +
| + | +---+ + + +++++ + | + | +
| + | + | + +----+ | | + | + | +
| + 3 | + | + + + 2 | | 2 + | + | +
| + | + | + + + | | + | + | +
| +---+ | | | + + ----+ | +---+ | | + | +
| | | | | + + | | | | | | + | +
| 1 | | | 8 | + + 1 | | | 1 | | 1 | | + | +
| | | | | + + | | | | | | | + | +
| +---+ | +---+ + ++---+ ++ +---+ +---+ | + | +
| | | | + | ++ | | |+ | +
|0 | | | 0 + 0 | ++ | 0 | |+ | +
| | | | + | ++ | | |+ | +
+---+ + +-------+ +---+| +|+ | +
+ + | +
0 1 2 3 4 5 6 7 8 9 10 11 12 + v: w u m u 1 0 2 4
题目解析:
按题目的逻辑,进行对应的操作,每次只进行一次变换即可
代码实现:
def get_ans(ss):
ans = ss
for i in range(1, len(ss)):
for j in range(i):
a = ss[:j] + ss[i] + ss[j+1:i] + ss[j] + ss[i+1:]
if a < ans:
ans = a
return ans
ss = input()
print(get_ans(ss))