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;
}