Problem2039--字符交换

2039: 字符交换

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 228  Solved: 46
[Status] [Submit] [Creator:]

Description

给你一个字符串 s,你需要对字符串进行恰好一次如下操作:
选择字符串中两个不同位置,并交换这两个位置上的字符。
你的目的是使交换后的字符串的字典序最小,求这个字典序最小的字符串。

关于字典序的说明:
从前往后比较两个字符串的每个字符,先比较它们的第一个字符,如果相等则比较第二个字符,若仍然相等则继续比较第三个字符,依次类推,直到两个字符串某一个位置上的字符不相等,或者比较到了某个字符串的末尾,则:
① 第一次比较到同一位置两个字符不相等时,则该位置的字符ASCII码较小的那个字符串的字典序较小;
② 第一次比较到某一个字符串的末尾时,则到末尾的那个字符串的字典序较小。
相同的两个字符的字典序相等。举一些例子:
· 字符串 "abc" 的字典序小于字符串 "abd"
· 字符串 "abc" 的字典序小于字符串 "abcd"
· 字符串 "abc" 的字典序等于字符串 "abc"

Input

输入共一行,包含一个字符串 s。s 的长度至少为 2 且不超过 1000,s 仅由小写英文字母组成。

Output

输出共一行,包含一个字符串,表示字符串 s 经过恰好一次交换操作能够得到的字典序最小的字符串。

Sample Input Copy

【样例输入1】
cab
【样例输出1】
acb
【样例输入2】
acb
【样例输出2】
abc
【样例输入3】
abc
【样例输出3】
acb

HINT

【样例解释】
样例1:交换 'c' 和 'a',得到 "acb"
样例2:交换 'c' 和 'b',得到 "abc"
样例3:虽然 "abc" 本身是由字符 'a'、'b'、'c' 能够组成的字典序最要的字符串,但是题目要求我们必须交换一次,所以我们交换 'b' 和 'c',得到 "acb"
【数据规模与约定】
设 |s| 表示字符串 s 的长度,则:
· 对于 30% 的数据,2 ≤ |s| ≤ 10
· 对于 60% 的数据,2 ≤ |s| ≤ 100
· 对于 100% 的数据,2 ≤ |s| ≤ 1000
且 s 仅由小写英文字母组成。

Source/Category