牛客——习题

对于一个字符串,我们想通过添加字符的方式使得新的字符串整体变成回文串,但是只能在原串的结尾添加字符,请返回在结尾添加的最短字符串。

给定原字符串A及它的长度n,请返回添加的字符串。保证原串不是回文串。

测试样例:

"ab",2
返回:"a"
class Palindrome {
public:
    string addToPalindrome(string A, int n)
    {
        // write code here
        int i=0;
        string temp =A;
        string s="";
        while(i<n)
        {
             s= A[i]+s;
            temp = A+s;
           
           if( palindrome(temp))
           {
               
               break;
           }
            i++;
        }
        return s;
            
    }
   //判断字符串是否是回文
    bool palindrome(string A)
    {
          string B =A;
        reverse(A.begin(),A.end());
        if(A==B)
           return 1;
        else 
            return 0;
    }
};
string addToPalindrome(string A, int n) {
        string s = A;
        reverse(s.begin(),s.end()); // 取得翻转串
        for(int i=0;i<n;i++) // Naive查找
             if(A.substr(i,n-i)==s.substr(0,n-i))//求最长公共子串
                return s.substr(n-i,i);//返回公共集后面剩余字符串
        return string("");
    }

 

点赞