笑看天下无敌手 发表于 2024-6-11 17:35:49

删除最少的字符个数,使其成为回文,问长度最大的是多少。

删除最少的字符个数,使其成为回文,问长度最大的是多少。
#include <stdio.h>
#include <string.h>

int isHuiWen(char* s) {
    int left = 0;
    int right = strlen(s) - 1;
    while (left < right) {
      if (s != s)
            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; // 备份当前字符
            for (j = i; j < n - 1; j++)
                s = s; // 移除当前字符
            s = '\0'; // 在字符串末尾添加空字符
            
               
            int res = len(s, n - 1); // 递归调用
            if (max < res)
                max = res;
            s = 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企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 删除最少的字符个数,使其成为回文,问长度最大的是多少。