问题描述
我在查找给定字符串的所有可能的回文分区时收到 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 (将#修改为@)