博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最长对称子串
阅读量:7223 次
发布时间:2019-06-29

本文共 2429 字,大约阅读时间需要 8 分钟。

//求一个字符串中最长对称字串,好像有点如google,那么输出goog/*O(n2)的算法如果我们换一种思路,我们从里向外来判断。也就是我们先判断子字符串A是不是对称的。如果A不是对称的,那么向该子字符串两端各延长一个字符得到的字符串肯定不是对称的。如果A对称,那么我们只需要判断A两端延长的一个字符是不是相等的,如果相等,则延长后的字符串是对称的。因此在知道A是否对称之后,只需要O(1)的时间就能知道aAa是不是对称的。*/#include 
#include
#include
#include
using namespace std;bool IsSymmetrical(char* pBegin, char* pEnd);void GetLongestSymmetricalLength_2(char* pString);void GetLongestSymmetricalLength(char* pString);void main(){ char c[30]; gets_s(c); //string s; //while(cin>>s){ //const char* c = s.c_str(); //GetLongestSymmetricalLength(c); //} GetLongestSymmetricalLength_2(c); system("pause");}void GetLongestSymmetricalLength(char* pString){ if(pString == NULL) return; int symmeticalLength = 1; char* pChar = pString; while(*pChar != '\0') { // Substrings with odd length char* pFirst = pChar - 1; char* pLast = pChar + 1; while(pFirst >= pString && *pLast != '\0' && *pFirst == *pLast) { pFirst--; pLast++; } int newLength = pLast - pFirst - 1; if(newLength > symmeticalLength) symmeticalLength = newLength; // Substrings with even length pFirst = pChar; pLast = pChar + 1; while(pFirst >= pString && *pLast != '\0' && *pFirst == *pLast) { pFirst--; pLast++; } newLength = pLast - pFirst - 1; if(newLength > symmeticalLength) symmeticalLength = newLength; pChar++; } cout<
<
pEnd) return false; while(pBegin < pEnd) { if(*pBegin != *pEnd) return false; pBegin++; pEnd --; } return true;}void GetLongestSymmetricalLength_2(char* pString){ if(pString == NULL) return; int symmeticalLength = 1; char* pFirst = pString; int length = strlen(pString); while(pFirst < &pString[length - 1]) { char* pLast = pFirst + 1; while(pLast <= &pString[length - 1]) { if(IsSymmetrical(pFirst, pLast)) { int newLength = pLast - pFirst + 1; if(newLength > symmeticalLength) symmeticalLength = newLength; } pLast++; } pFirst++; } cout<
<

 

转载于:https://www.cnblogs.com/dangeal/p/7839581.html

你可能感兴趣的文章
awk 文本处理
查看>>
【JSConf EU 2018】主题总结 (部分主题已有中文文章)
查看>>
JavaScript面向对象名词详解
查看>>
Java设计模式学习 - 责任链模式
查看>>
JVM,DVM,ART
查看>>
webgl滤镜--会呼吸的痛
查看>>
用Go语言实现微信支付SDK
查看>>
oauth2在php实践
查看>>
LeetCode.914 卡牌分组
查看>>
填坑app:compileDebugJavaWithJavac
查看>>
Android 100+行实现本地跳一跳辅助(不需要连接电脑)
查看>>
位状态的使用
查看>>
面试技术题笔记
查看>>
Myth源码解析系列之一-项目简介
查看>>
JS易混淆的方法整理
查看>>
iOS下JS与OC互相调用(八)--Cordova详解+实战
查看>>
七牛实时音视频云视频连线demo(web部分)
查看>>
Netty源码分析(六):SelectedSelectionKeySetSelector
查看>>
forEach,for...of,map与asycn/await
查看>>
springboot 2 Hikari 多数据源配置问题(dataSourceClassName or jdbcUrl is required)
查看>>