c 題解 1029 舊鍵盤 (20 分)
阿新 • • 發佈:2021-11-24
原題
https://pintia.cn/problem-sets/994805260223102976/problems/994805292322111488
程式碼
#include <iostream> #include <string.h> using namespace std; char shouldget[81]; char trulyget[81]; int result[127] = {0};//對應的ASCII碼錶 int main() { scanf("%s", shouldget); getchar(); scanf("%s", trulyget); for (int i = 0; i < strlen(shouldget); i++) { result[(int)shouldget[i]] = 1;//把字元儲存為陣列索引並計數 } for (int i = 0; i < strlen(trulyget); i++) { result[(int)trulyget[i]]++; } for (int i = 0; i < strlen(shouldget); i++) { int num = (int)shouldget[i]; if (result[num] == 1)//把字元只出現一次的輸出 { if (num >= 'A' && num <= 'Z') { cout << (char)num; result[num + 32] = 0;//把對應的小寫置為0 } else if (num >= 'a') { cout << (char)(num - 32); result[num - 32] = 0;//把對應的大寫置為0 } else { cout << (char)num; } result[num] = 0;//避免重複輸出 } } return 0; }
同樣的思路,別人的部落格https://blog.csdn.net/shiliang97/article/details/100085619
#include<iostream> using namespace std; int s3[256]; int main(){ string s,s2; cin>>s>>s2; for(int i=0;i<s2.length();i++){ if(s2[i]>='a'&&s2[i]<='z'){//轉換成大寫字母 s2[i]+='A'-'a'; } s3[s2[i]]=1; } for(int i=0;i<s.length();i++){ if(s[i]>='a'&&s[i]<='z'){//轉換成大寫字母 s[i]+='A'-'a'; } if(s3[s[i]]!=1){//在真實輸出裡,找不到就輸出 cout<<s[i]; s3[s[i]]=1; } } return 0; }