求助
  • 板块学术版
  • 楼主andygao
  • 当前回复0
  • 已保存回复0
  • 发布时间2021/8/6 11:35
  • 上次更新2023/11/4 11:51:03
查看原帖
求助
542705
andygao楼主2021/8/6 11:35

这道题怎么改?

轩轩有一个字符串s,最开始s是空串。

轩轩会进行n个操作,每个操作会给两个字符串a和b。如果s接上a以后,会以串b作为结尾,那么轩轩就把串a接在s的后面。否则不对s进行任何修改。

轩轩希望知道串s最后是什么样。因为不喜欢小写字母,轩轩希望把所有的小写字母转化成大写字母以后输出。

轩轩写了下面这个程序,但发现无法正确地完成任务。

样例:

5

Igj Igj

AwH IgjAwH

dMUn wHdMUn

hznj Unhznj

q dmxIRMuUY

输出

IGJAWHDMUNHZNJ

#include <string>
#include <iostream>

using std::cin;
using std::cout;
using std::string;
int n;
string s;

int main(){
	cin >> n;
	for(int i = 1; i <= n; i++){
		string a, b;
		cin >> a >> b;
		string t = s + a;
		if(t.length() < b.length())
			continue;
		if(t.substr(t.length() - b.length(), b.length()) == b)
			s = t;
	}
	for(int i = 0; i <= s.length()-1; i++)
		if('a' <= s[i] && s[i] <= 'z')
			s[i] = s[i] + 'A' - 'a';
	cout << s << '\n';
	return 0;
}
2021/8/6 11:35
加载中...