当前位置:首页 » 《关注互联网》 » 正文

【C语言】【Leetcode】409. 最长回文串

12 人参与  2024年10月12日 16:01  分类 : 《关注互联网》  评论

点击全文阅读


文章目录

题目思路代码呈现


题目

链接: link
在这里插入图片描述


思路

关于这道题,比起一般的回文数题,这题的区别的在给定的字符中任意排序直至形成一个最长的回文数,而且题目中跟我们提到,这里的字符串中只会出现字母,我们只需区分大小写即可

所以我们可以这样思考,建立一个有52个int类型大小的数组,用来记录每个大小写字母出现的次数

最后判断每个数组里的元素是否为偶数,是偶数直接在回文数总长度上加上这个长度,奇数,则加上奇数后减一

需要注意的一点是,如果有单独出来的一个数,可以把它放在中间,为回文数的总长度加上一,但是仅只能一次


代码呈现

int longestPalindrome(char* s) {    int ch[52] = {0};    for (int i = 0; i < strlen(s); i++) {        if (s[i] >= 'A' && s[i] <= 'Z')            ch[s[i] - 'A']++;        else if (s[i] >= 'a' && s[i] <= 'z')            ch[s[i] - 'a' + 26]++;    }    int flag = 0;    int tmp = 0;    for (int i = 0; i < 52; i++) {        if (ch[i] % 2 == 0)            tmp += ch[i];        else if (ch[i] % 2 != 0) {            tmp += ch[i] - 1;            flag = 1;        }    }    return tmp + flag;}

点击全文阅读


本文链接:http://zhangshiyu.com/post/171080.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1