输出最长回文子串(找到最长回文子串,并输出最长回文子串)
来源:互联网 发布:数据库安全 编辑:程序博客网 时间:2024/06/04 20:06
将一个很长的字符串分割成一段一段的子串,要求子串都是回文串,有回文串就输出最长的,没有回文串就将字符一个个输出。
思路:和之前找字符串的的最长回文子串其实属于一类问题,还是需要先依次遍历整个字符串,找到字符串的最长回文子串。此时就需要返回最长子串的中心位置即最长回文子串的长度(由于需要返回两个值,在此直接在主函数中实现,并不使用函数调用的方式),然后根据最长回文子串的长度是奇数还是偶数,输出最长回文字串就可以了。
#include <iostream>using namespace std;int main( ){int count = 0;int max = 0;//最长回文子串的长度int max_index = 0;//最长回文子串的中心点位置char str[] = "abcdefgh";int n = strlen(str);cout << "字符串的总长度为:" << n << endl;//判断字符串是否为空if (str == NULL || n<1){return 0;}for (int i = 0; i < n; i++){//字符串为奇数时for (int j = 0; (i - j) >= 0 && (i + j)<n; j++){if (str[i - j] != str[i + j]){break;}count = 2 * j + 1;}if (count > max){max = count;max_index = i;}//字符串为偶数时for (int k = 0; (i - k) >= 0 && (i + k + 1) < n; k++){if (str[i - k] != str[i + k + 1]){break;}count = 2 * k + 2;}if (count > max){max = count;max_index = i;}}cout << "最长的回文子串的中心位置:" << max_index << endl;cout << "最长的回文子串的长度是:" << max << endl;if (max ==1){for (int j = 0; j<n; j++){cout << str[j]<<" ";}cout << endl;}if (max % 2 == 1&&max!=1)//最长的回文子串的长度是奇数{//字符串为奇数时for (int j = (max_index - max / 2); j<max; j++){cout << str[j];}cout << endl;}else{//字符串为偶数时for (int j = (max_index - max / 2 + 1); j<max; j++){ cout << str[j];}cout << endl;}return 0;}
1 0
- 输出最长回文子串(找到最长回文子串,并输出最长回文子串)
- 原样输出最长回文子串
- 最长回文子串的输出
- 《剑指offer》输出最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 使用SSH方式免去Git每次push都输入用户名和密码
- 获取Request中Cookie的值
- Spring Session 介绍及使用
- XML 和 java对象相互转换
- Appium windows的安装
- 输出最长回文子串(找到最长回文子串,并输出最长回文子串)
- Appium的一点一滴
- 小说接入UC浏览器内核技术对话(二)
- Appium学习第一个测试脚本
- 简单的数据库(DB)连接以及sql查询
- 属性重载:__set() & __get()
- Appium学习第一个测试脚本
- iOS开发——毛玻璃透明
- Date picker 控件简介