Problem P: 字符串折叠


Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 792   Solved: 563
[ Submit][ Status][ Web Board]

Description

定义MyString类,包括:
1. 一个字符数组或字符指针,用于存储字符串内容。
2. void input():读取一个不含空白符的字符串。
3. void output():输出字符串。如果字符串不是回文串,则输出原串。如果是回文串,则仅输出前半部分。如:
原串:abccba,则输出abc
原串:abcdcba,则输出abcd
原串:abcd,则输出abcd

Input

第一行是整数N>0,表示之后有N个测试用例。每个测试用例占一行,是一个不含空白符的字符串。每个串不超过1000个字符。

Output

见样例。

Sample Input

4
abcdcba
abccba
abcdefgh
aaaaaaaa

Sample Output

abcd
abc
abcdefgh
aaaa

HINT

Append Code

int main()
{
     MyString str;
     int n, i;
     cin>>n;
     for (i = 0; i < n; i++)
     {
         str.input();
         str.output();
     }
     return 0;
}
#include 

using namespace std;

class MyString
{
private :
    char s[1086];
public :
    MyString(){}
    void input()
    {
        cin>>s;
    }
     void output()
     {
         char *p = s;
         int flag = 0;
         int len = strlen(s)/2;
         int length = strlen(s);
         for(int i = 0; i < len; i++)
         {
             for(int j = length - i - 1;j > len; j--)
             {
                 if(s[i]==s[j])
                    break;
                 else
                 {
                     flag = 1;//非回文
                     break;
                 }

             }
             if(flag == 1)
                break;
             else
                continue;
         }
         if(flag == 1)
         {

             while(*p!='\0')
            {
                cout<<*p++;
            }//非回文全输出。
         }
         else
         {
             if(length%2==0)//回文判断奇偶输出
             {
                 while(len--)
                {
                    cout<<*p++;
                }
             }
             else
             {
                 len+=1;
                 while(len--)
                {
                    cout<<*p++;
                }
             }
         }
         cout<>n;
    for (i = 0; i < n; i++)
    {
        str.input();
        str.output();
    }
    return 0;
}

你可能感兴趣的:(c++,c语言)