CF1111A Superhero Transformation 题解

Content

有两个字符串 \(s,t\)。规定元音字母只能够变换成元音字母,辅音字母只能够变换成辅音字母。试问 \(s\) 能否经过若干次变换得到 \(t\)

数据范围:\(1\leqslant |s|,|t|\leqslant 1000\)

Solution

首先看 \(|s|\) 是否等于 \(|t|\),如果不是的话就不可能将 \(s\) 变换成 \(t\),毕竟你不可以增加字符或者删除字符。然后再一个位置对应判断是否都是元音字母或者是否都是辅音字母。一旦有位置出现了不满足上述两个条件的情况,那么 \(s\) 也不可能变换成 \(t\)。遍历完之后如果还没出现不能满足题目要求的情况,那么 \(s\) 就能够变成 \(t\)

Code

string s, t;

int vowel(char ch) {
	return ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u';
}

int main() {
	cin >> s >> t;
	int lens = s.size(), lent = t.size();
	if(lens != lent)	return printf("No"), 0;
	_for(i, 0, lens - 1)
		if(!((vowel(s[i]) && vowel(t[i])) || (!vowel(s[i]) && !vowel(t[i]))))	return printf("No"), 0;
	return printf("Yes"), 0;	
	return 0;
}
posted @ 2021-12-17 14:30  Eason_AC  阅读(43)  评论(0)    收藏  举报