首页 > 编程知识 正文

回文串是什么意思,如何找出最长字符串

时间:2023-05-03 16:41:50 阅读:32908 作者:444

5 .最长回文子串给你字符串s,在s中找到最长的回文子串。

示例1 :

输入: s=“babad”

输出:“bab”

解释:“aba”也是符合题意的回答。

示例2 :

输入: s=“cbbd”

输出:“bb”

示例3 :

输入: s=“a”

输出:“a”

示例4 :

输入: s=“交流”

输出:“a”

以各个点为中心点,从中心点向两侧展开寻找回文串。 如果回文列为奇数,则从最中心的一个节点向两侧展开;如果回文列为偶数,则从最中心的两个节点向两侧展开反复寻找最长回文列的方式1 class solution { publicstringlongestpalindrome } { strings }/is.length (; I ) ) /偶数列中间的两个节点为stringS1=extendHuiwen(s,I,i 1); //奇数列中间的节点为strings2=extendhuiwen(s,I,I ); //最长回文子串RES=RES.length(s1.length )? res:s1; res=res.length () s2.length )? res:s2; }返回RES; } publicstringextendhuiwen (strings,int l,int r ) while(L=0RS.length ) (if ) s.charat )=s.charat ) )。 r; }else{ break; }returns.substring(L1,r ); }方式2 class solution { publicstringlongestpalindrome (strings ) { String res=' '; int len=s.length (; for(intI=0; I(2*Len-1; I ) { int l=i/2; int r=i/2 i%2; 字符串=扩展(s,l,r ); res=res.length () curs.length )? res :curs; }返回RES; }publicstringextand(strings,int l,int r ) while(L=0RS.length ) ) if ) s.charat(L )==s.charat(r ) ) }else{ break; }returns.substring(L1,r ); } http://www.Sina.com/http://www.Sina.com /

647 .给回文子串一个字符串。 你的任务是计算这个字符串有多少个回文子串。

具有不同开始或结束位置的子列被视为不同的子列,即使它们由相同的字符组成。

示例1 :

输入: abc

输出: 3

三个回文字符串: “a”、“b”、“c”

示例2 :

输入: aaa

输出: 6

解说: 6个回文字符串: “a”、“a”、“a”、“aa”、“aa”、“aaa”

中心扩展类解决方案{ publicintcountsubstrings (strings ) { int n=s.length ); int res=0; //0~2N-2(2N-2 )/2为最后元素for ) intI=0; i2*n-1; I ) ) /以任一节点为中心节点向两侧扩展(/I为奇数时,实际为偶数个要素)//i/2 i%2相对于奇偶校验不同int l=i/2; int r=i/2 i%2; while(L=0RNS.Charat(L )==s.charAt(r ) r ) ) L----; r; res; } }返回RES; } http://www.Sina.com/http://www.Sina.com /

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。