提供一种巧妙的回文子串构造方法

题目链接:https://ac.nowcoder.com/acm/problem/271164

注意到 k <= n / 2 ,显然 2 * k <= n 。

不妨就构造一种 aa bb cc dd...的字符串,总共含有 k 个长度为 2 的回文子串。

那么剩下的 n - 2 * k 个字符就按顺序输出即可,类似 aa bb cc dd efgh... 。

附:如果构造到 'z',就用模运算继续从'a'开始重新构造。

#include <iostream>
#include <string>

using namespace std;

int main() {
	int n, k; cin >> n >> k;
	for(int i = 0; i < k; i++) {
		cout << char('a' + i % 26) << char('a' + i % 26);
	}
	for(int i = k; i < n - k; i++) {
		cout << char('a' + i % 26);
	}
	
	return 0;
}

全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务