列表

详情


NC222104. 重排字符串

描述

小红拿到了一个只由小写字母组成的字符串。她准备把这个字符串重排(只改变字母的顺序,不改变数量)
重排后小红想让新字符串不包含任意两个相同的相邻字母。
你能帮帮她吗?

输入描述

第一行一个正整数  ,代表字符串的长度。 
第二行为一个长度为 的、只由小写字母组成的字符串。

输出描述

如果可以完成重排,请在第一行输出一个“yes”,第二行输出重排后的字符串。如果有多个正解,输出任意即可。
如果不能重排,则直接输出“no”

示例1

输入:

5
aaaaa

输出:

no

示例2

输入:

7
aabbccc

输出:

yes
cabcabc

说明:

bcbcaca也是正确答案(正确答案还有很多,输出任意即可)

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

Python3 解法, 执行用时: 69ms, 内存消耗: 6356K, 提交时间: 2022-11-27 23:32:01

n = int(input())
S = input()
S = sorted(S)
nn = n//2
if S[-1] == S[nn-1]:
    print('no')
else:
    a, b = S[:nn], S[nn:]
    for i in range(len(a)):
        S[i*2] = b[i]
        S[i*2+1] = a[i] 
    print('yes')
    print(''.join(S))


    

上一题