南京理工大学校赛A题

题目链接:点击打开链接

这道题是个想法题,根据题意,s串与t串都俩个串都可以经过若干步它的规则来改变,看是否能够通过一系列操作之后,俩个串是一样的。

由于是俩个串都可以动,我们就考虑一个标准,将俩个串都进行处理,相同的相邻字符去掉,俩个串都只保留相邻不同的字符,那么如果俩个串能够通过规则推出一样的话,他们一定能够得到相同的最简字符串,见代码!!

#include <cstdio>
#include <cstring>
#include <string>
#include <iostream>
#include <algorithm>
#include <stack>
#include <queue>
#include <map>
#include <vector>
#include <cmath>
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
using namespace std;
const int maxn = 1111;
int sum[maxn];
//char s[maxn];
//char t[maxn];
string s, t;
int cmp(char c, char d)
{
	return c < d;
}
int main(void)
{
	//freopen("in.txt", "r", stdin);
	int T;

	scanf("%d", &T);
	while (T--)
	{
		bool flag = true;
		//scanf("%s%s",s,t);
		cin >> s >> t;
		int len_s = s.length();
		int len_t = t.length();
		string temp1 = "";
		string temp2 = "";
		temp1.push_back(s[0]);
		temp2.push_back(t[0]);
		int i, j;

		for (i = 1; i < len_s; i++)
		{
			if (s[i] != s[i - 1])
				temp1.push_back(s[i]);                          //俩者都只留一个
		}
		for (i = 1; i < len_t; i++)
		{
			if (t[i] != t[i - 1])
				temp2.push_back(t[i]);
		}
		if (temp1 != temp2)
			flag = false;
		if (flag)
			printf("Yes\n");
		else
			printf("No\n");
	}
	return 0;
}

你可能感兴趣的:(字符串,想法题)