回文串

实验任务

回文串指按字母从左到右和从右到左读一致的字符串,现在 ytaaa 需要一个程序来判断一个字符串是否是回文串。
总共有两个操作。
1. 添加一个字符串。例如 add s。每个句子长度小于 100
2. 判断第 k(从 1 开始)个字符串是否是回文串。例如 judge k。

数据输入

输入第一行包括一个正整数 N(N<=1000),表示操作总数。接下来 n 行,每行为一个操作。

数据输出

对于每个判断操作,输出判断结果,如果是回文串输出 yes,否则输出 no。编号不存在输出 error。

输入示例

5
add asdfdsa
add asdf
judge 1
judge 2
judge 3

输出示例

yes
no
error

解题思路

= =| 直接按题目要求翻译就行了
STL大法好!

参考代码

#include <iostream>  
#include <vector>  
#include <string>  
using namespace std;  
vector<string> str;  
void judge(string s);  
int main()  
{  
    int n,i,num;  
    string opr,s,temp;  
    while (~scanf("%d",&n)){  
        getchar();  
        for (i = 0;i < n;i++){  
            cin >> opr;    //读入要进行哪种操作  
            getchar();  
            if (opr == "add"){   //如果是添加的话  
                getline(cin,s);   //再读入一个字符串
                str.push_back(s);  //push_back到str数组里
            }else if (opr == "judge"){  //如果是判断的话  
                cin >> num;  //读入判断的编号
                if (num > str.size())  //如果编号大于str中元素的个数,输出“error”
                    cout << "error" << endl;  
                else  
                    judge(str[num-1]);    
            }     
        }  
    }  
    return 0;  
}  

void judge(string s){ //判断是否回文 
    int i,len = s.size();  
    bool flag = true;  
    for (i = 0;i < (len+1)/2;i++) //循环到 (len+1)/ 2 
        if (s[i] != s[len-1-i])  
            flag = false;  
    printf("%s\n",flag?"yes":"no");  
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值