C++给定一个字符串,添加若干字符,使得字符串变为回文字符串,请问怎样能让这个字符串最短?

 我来答
果果就是爱生活
高能答主

2020-09-11 · 专注生活教育知识分享
果果就是爱生活
采纳数:2071 获赞数:272264

向TA提问 私信TA
展开全部

代码如下:

#include <iostream>

#include <cstdlib>

#include <string>

#include <algorithm>

using namespace std;

bool IsHW(const string& str)

{

    string s=str;

    reverse(s.begin(),s.end());

    return s==str;

}

int main()

{

    string str;

    while(cin>>str)

    {

        if(str.empty()||str.length()==1)

        {

            cout<<"YES";

        }

        else

        {

            bool ret=false;

            string tmp;

            int n=str.length();

            for(int i=0;i<n;++i)

            {

                tmp=str.substr(0,i)+str.substr(i+1);

                //将i位置的字符去掉

                if(IsHW(tmp))

                {

                    ret=true;

                    break;

                }

            }

            if(ret)

                cout<<"YES"<<endl;

            else

                cout<<"NO"<<endl;

        }

    }

    return 0;

}

扩展资料:

reverse函数用于反转在[first,last)范围内的顺序(包括first指向的元素,不包括last指向的元素),reverse函数没有返回值 

template <class BidirectionalIterator>

void reverse (BidirectionalIterator first, BidirectionalIterator last)

{

    while ((first!=last)&&(first!=--last))

    {

        std::iter_swap (first,last);

        ++first;

    }

}

帐号已注销
2020-09-12 · TA获得超过77.1万个赞
知道小有建树答主
回答量:4168
采纳率:93%
帮助的人:165万
展开全部

#include <iostream>

#include <algorithm>

using namespace std;

bool IsHW(const string& str)

char Str[100];

scanf("%s", Str);

if(judge(Str))

printf("Yes\n");

else

对于ab字符串,本身不是回文串(反过来是字符串:ba),但是通过在小写字母b的后面添加一个小写字母a,可以使其成为回文串,即:aba(正向、反向内容都相同)

但是对于abcd 字符串,本身不是回文串(反过来是字符串:dcba),但是无论通过什么方法,都无法做到只添加一个字母,使其成为一个回文串。

扩展资料:

字符串或串(String)是由数字、字母、下划线组成的一串字符。一般记为 s=“a1a2···an”(n>=0)。它是编程语言中表示文本的数据类型。在程序设计中,字符串(string)为符号或数值的一个连续序列,如符号串(一串字符)或二进制数字串(一串二进制数字)。

通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。

参考资料来源:百度百科-字符串

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
DAIZYWADE
推荐于2017-12-21 · TA获得超过359个赞
知道小有建树答主
回答量:214
采纳率:0%
帮助的人:31.6万
展开全部
从字符串中间向右枚举对称轴,确认对称以后长度就是当前位置乘以二。
如果嫌时间复杂度高可以二分答案。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2017-07-18
展开全部
这种题肯定别人都懒得跟你回答了,更何况你是伸手
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式