帮助找到最长的对称子字符串

编程入门 行业动态 更新时间:2024-10-26 12:23:36
本文介绍了帮助找到最长的对称子字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

请在此程序上需要帮助. 我没有得到正确的结果...(程序应该找到最长的对称子字符串并显示它) 感谢您的帮助.

Please I need help with this program. I am not getting proper result...(The program should find the longest symmetric sub-string and display it) Thanks for the help.

#include <iostream> #include<string> using namespace std; char s[30]; int i=0, j, first, last, length,subleng, maxi=0; void main () { cout<<"Enter a string to process \n"; cin>>s[i]; while (s[i]!='\0') { cin>>s[i]; i++; } length = static_cast<int>(strlen(s)); for(i=0 ; i<length ; i++) { for(j=length; j>=0; j--) { if (s[i]==s[j]) { subleng= j-i; if(subleng>maxi) { first=i; last=j; maxi= subleng; } } } } cout<<"The longest symmetric substring is : \n"; for (i=first ; i<last ; i++) { cout<<s[i]; } cout<<endl<<endl; }

推荐答案

尝试以下代码: Try the following code: #include <iostream> #include<string> using namespace std; char s[30]; int i=0, j, first, last, length,subleng, maxi=0; void main () { cout<<"Enter a string to process \n"; cin >> s; length = static_cast<int>(strlen(s)); for(i=0 ; i<length ; i++) { int j,k,n; for (n=0; n<2; n++) {// 0 => even symmetric substrings, 1 => odd symmetric substrings j = i-n; k = i+1; subleng = n; while ( j>=0 && k<length && s[j]==s[k]) { subleng +=2; j--; k++; } if( subleng > maxi) { first= j + 1; maxi= subleng; } } } cout<<"The longest symmetric substring is : \n"; for (i=0 ; i<maxi ; i++) { cout<<s[first+i]; } cout<<endl<<endl; }

:)

在内部for循环中,您应该将if (s[i]==s[j])更改为if (s[i]==s[j-1]) ... Inside the inner for loop you should change if (s[i]==s[j]) to if (s[i]==s[j-1])...

更多推荐

帮助找到最长的对称子字符串

本文发布于:2023-11-30 01:07:16,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1648207.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:字符串   对称   最长

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!