第一届程序设计竞赛题解(D题)

D.周波廷学长的AK

题目描述:

AK是每个acmer在每场比赛中的最大追求。(AK:指在一次比赛中把全部题目都写出来了)
周波廷学长正在整理自己的训练成绩。我们将训练赛的名字的简化成为一个个的字符串。
给定 n 个字符串。
如果一个字符串的结尾是 “AK” ,那么这次训练的成绩就是AK。请你输出哪次比赛会AK。
如果有多个次AK,输出最靠前的一个。
数据保证一定有解。

输入描述:

第一行一个整数 n(1 ≤ n≤ 1×102) ,表示字符串的数量。
接下来 n 行,一行一个字符串 ,保证每个字符串大小不超过100。

输出描述:

输出一个字符串 (比赛的名字) ,表示这次比赛AK了且最靠前(不包含"AK")。

示例:

输入:
3
acmer
ICPCAk
CCPCAK

输出:
ICPC

说明:
周波廷学长在ICPC与CCPC都AK了,但是ICPC排名更靠前

思路:对于每一个字符串,先计算其长度,再使用 substr(x, y)函数 (第一个参数为开始位置,第二个参数为结束位置)取出最后两位字符,如果是 “AK” ,则输出除去 “AK” 字符的字符串,结束运行。

AC代码如下:

#include <bits/stdc++.h>
using namespace std;
const int N = 110;

int n;
string a[N];

int main(){
	cin >> n;
	for (int i = 1; i <= n; i++)
		cin >> a[i];

	for (int i = 1; i <= n; i++){
		int len = a[i].size();//计算字符串长度

		if (len >= 2){
			string s = a[i].substr(len - 2, 2);//取出最后两位字符
			if (s == "AK"){
				//如果AK,则输出字符串
				for (int j = 0; j < len - 2; j++)
					cout << a[i][j];
				cout << endl;
				break;
			}
		}
	}
	
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BraumAce

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值