#abc223b. [abc223_b]String Shifting
[abc223_b]String Shifting
问题陈述
对于一个非空字符串,左移操作将第一个字符移到字符串的末尾,右移操作将最后一个字符移到字符串的开头。
例如,对 abcde
进行一次左移得到 bcdea
,对 abcde
进行两次右移得到 deabc
。
给定一个由小写英文字母组成的非空字符串 。在对 进行任意次数的左移和右移操作后得到的字符串中,找出字典序最小和最大的字符串。
字典序排序是什么意思?
简单来说,字典序排序就是按照字典中的顺序排列单词。更正式的定义如下,这里描述了如何判断不同字符串 和 的字典序关系。
以下,设 表示 的第 个字符。同时,如果 字典序小于 ,我们将此事实表示为 ;如果 字典序大于 ,我们将此事实表示为 。
- 设 为 和 长度的较小值。对于每个 ,我们检查 和 是否相等。
- 如果存在某个 使得 ,我们设最小的这个 为 。然后,我们比较 和 。如果 在字母表中先出现于 ,我们确定 并停止;如果 在字母表中后出现于 ,我们确定 并停止。
- 如果不存在任何 使得 ,我们比较 和 的长度。如果 长度小于 ,我们确定 并停止;如果 长度大于 ,我们确定 并停止。
约束条件
- 字符串 由小写英文字母组成。
- 的长度范围是 到 (包含边界)。
输入
从标准输入读入输入数据,数据格式如下:
输出
输出两行。第一行应包含 ,第二行应包含 。其中, 和 分别表示对 进行任意次数的左移和右移操作后得到的字典序最小和最大的字符串。
示例输入 1
aaba
示例输出 1
aaab
baaa
通过移动操作,我们可以得到四个字符串:aaab
、aaba
、abaa
、baaa
。其中,字典序最小的是 aaab
,字典序最大的是 baaa
。
示例输入 2
z
示例输出 2
z
z
无论进行多少次操作,结果都是 z
。
示例输入 3
abracadabra
示例输出 3
aabracadabr
racadabraab