首页 > 试题广场 >

字符串的处理

[编程题]字符串的处理
  • 热度指数:34 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

定义字符串的以下几种操作:

  • reverse(A)获得A字符串的逆序字符串,例如reverse("abc") = "cba"
  • shuffle(A)获得A随机重排的字符串,例如shuffle("dog") ∈ {"dog", "dgo", "odg", "ogd", "gdo", "god"}
  • merge(A1, A2),合并A1和A2两个字符串,合并过程中只保证A1和A2本身字母的顺序,例如merge("qwe", "asd")的可能结果有很多, “qweasd”和“qwased”都是可能的取值。现在给定一个字符串S,S ∈merge(reverse(A), shuffle(A))。求以字母表顺序排序的A的最小值。

输入描述:
输入一个字符串S。


输出描述:
输出一个字符串,为A的最小取值。
示例1

输入

abcdefgabcdefg

输出

agfedcb

说明

提示:reverse("agfedcb") = "bcdefga"shuffle("agfedcb") = "abcdefg"merge("bcdefga", "abcdefg") = "abcdefgabcdefg"