e554 - 11713 - Abstract Names
題目描述
題目要求判斷兩個字串是否為抽象名稱,即它們是否具有相同的長度,並且僅在母音的位置上有所不同。換句話說,遊戲中的名稱是否可以通過替換現實名稱中的母音來獲得。
解題思路
解題思路是首先檢查兩個字串的長度是否相等。如果長度不相等,則直接輸出 "No"。如果長度相等,則將兩個字串中的所有母音替換為 'a',然後比較替換後的兩個字串是否相等。如果相等,則輸出 "Yes",否則輸出 "No"。 這種方法利用了題目中母音可以被替換的特性,將比較問題簡化為比較替換後的字串是否相等。
複雜度分析
- 時間複雜度: O(n),其中 n 是字串的長度。因為需要遍歷字串來替換母音和比較字串。
- 空間複雜度: O(n),因為在最壞的情況下,需要複製字串來進行替換。
程式碼
#include <iostream>
using namespace std;
int main(){
string a,b;
cin >> a;
while(cin >> a >> b){
int al=a.length(),bl=b.length();
if(al!=bl){
cout << "No\n";
}
else{
while(al--){
if(a[al]=='a'||a[al]=='e'||a[al]=='i'||a[al]=='o'||a[al]=='u'){
a[al]='a';
}
}
while(bl--){
if(b[bl]=='a'||b[bl]=='e'||b[bl]=='i'||b[bl]=='o'||b[bl]=='u'){
b[bl]='a';
}
}
if(a==b){
cout << "Yes\n";
}
else{
cout << "No\n";
}
}
}
}