删除最少的字符个数,使其成为回文,问长度最大的是多少。
- #include <stdio.h>
- #include <string.h>
-
- int isHuiWen(char* s) {
- int left = 0;
- int right = strlen(s) - 1;
- while (left < right) {
- if (s[left] != s[right])
- return 0;
- left++;
- right--;
- }
- return 1;
- }
-
- int max = 0;
-
- int len(char* s, int n) {
-
- if (!isHuiWen(s)) {
- int i, j;
- for (i = 0; i < n; i++) {
- char temp = s[i]; // 备份当前字符
- for (j = i; j < n - 1; j++)
- s[j] = s[j + 1]; // 移除当前字符
- s[n - 1] = '\0'; // 在字符串末尾添加空字符
-
-
- int res = len(s, n - 1); // 递归调用
- if (max < res)
- max = res;
- s[n - 1] = temp; // 恢复当前字符
- if (isHuiWen(s)) {
- break;
- }
- }
- return max;
- }
- return n; // 如果是回文,返回字符串长度
- }
-
- int main() {
- char s[] = "acbdcaa";
- int n=strlen(s);
- printf("%d\n", len(s,n));
- return 0;
- }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |