微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

找到给定字符串的回文分区的算法

如何解决找到给定字符串的回文分区的算法

我在查找给定字符串的所有可能的回文分区时收到 SIGSEGV 错误

输入/输出:- aba

O/P:- (aba),(a)(b)(a)

该算法应该在它看到回文序列的每个地方给出一个分区。

我尝试生成长度为 0 到 n-1 的所有可能的子序列,如果生成的子序列有效,则我继续处理剩余的字符串。

这是我试过的代码

`

bool ispalindrome(string str)
{
int start = 0;
int end = str.length()-1;

while(start<end)
{
    if(str[start]!=str[end])
        return false;
    
    start++;
    end--;
}
return true;
}
void solution(string str,string result)
{
if(str.length()==0)
{
    cout<<result<<endl;
    return;
}
for(int i = 0 ; i<str.length(); i++)
{
    string prefix = str.substr(0,i);
    string rest = str.substr(i,str.length()-i);
    
     if(ispalindrome(prefix))
     {
         // cout<<prefix<<" "<<rest<<endl;
         // cout<<"yes";
      solution(rest,result + "(" + prefix + ")");
     }
  }

   }
  int main()
  {
    string s; cin>>s;
    solution(s,"");
    return 0;
   }`

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。