"时间限制: 3000MS\n\n内存限制: 589824KB\n\n题目描述: \n\n我们称一个字符串为回义串,当且仅当这个串从左往右和从右往左读是一样的。例如,aabbaa、a、abcba,而ab、ba、abc不是回文串。注意单个字符也算是回文串。\n\n现在,给你一个长度为n的字符串 S,接下来需要将这个串重新排列,组成一个新的字符串 T。首先,T一开始为空,之后进行如下操作:从左往右开始,剪切 S 中开头k个字符构成的子串,如果该子串是一个回文串,就将其拼接在T的前面;否则,将其拼接在T的末尾,其中k是一个给定的参数。\n\n你需要输出最后T是多少?\n\n输入描述:\n\n第一行两个正整数 n,k (1<=n,k<=100000),其中k是n的因子。\n第二行输入字符串 S。该字符串仅由小写英文字母组成。\n\n输出描述:\n\n输出一行一个字符串,表示T.\n思路:\n1. 首先,将字符串S按照长度k进行分割,得到n/k个子串。\n2. 对于每个子串,判断是否是回文串。\n3. 如果是回文串,则将其拼接在T的前面;如果不是回文串,则将其拼接在T的末尾。\n4. 最后输出字符串T。\n\n代码实现如下:\n\npython\nn, k = map(int, input().split())\ns = input()\n\nt = \"\"\nfor i in range(0, n, k):\n sub_str = s[i:i+k]\n if sub_str == sub_str[::-1]:\n t = sub_str + t\n else:\n t = t + sub_str\n\nprint(t)\n\n

回文串重排算法 - Python 代码实现

原文地址: https://www.cveoy.top/t/topic/qf5K 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录