在C ++中制作字符串回文集所需的最小追加数
问题陈述
给定一个字符串,找到要附加的最小字符以组成一个字符串回文。
示例
如果字符串是abcac,那么我们可以通过添加2个高亮字符(即abcacba)来创建字符串回文
算法
检查字符串是否已经是回文,如果是,则无需附加任何字符。
逐一从字符串中删除一个字符,并检查剩余的字符串是否是回文
重复上述过程,直到琴弦变成回文
返回最终删除的字符数
示例
#include <iostream>
#include <cstring>
using namespace std;
bool isPalindrome(char *str) {
int n = strlen(str);
if (n == 1) {
return true;
}
int start = 0, end = n - 1;
while (start < end) {
if (str[start] != str[end]) {
return false;
}
++start;
--end;
}
return true;
}
int requiredAppends(char *str) {
if (isPalindrome(str)) {
return 0;
}
return 1 + requiredAppends(str + 1);
}
int main() {
char *str = "abcac";
cout << "Characters to be appended = " << requiredAppends(str) << endl;
return 0;
}输出结果
当您编译并执行上述程序时。它产生以下输出-
Characters to be appended = 2
热门推荐
10 女神节医生祝福语简短
11 厨房祝福语简短100句
12 元旦祝福语简短给女友
13 祝福语简短独特教官
14 红包祝福语简短10字
15 客户十一祝福语大全 简短
16 钢琴获奖老师祝福语简短
17 简短生日祝福语女朋友
18 班级群祝福语简短大全