Title Description
On a broken keyboard, some of the keys is worn out. If you are type some sentences, the characters corresponding to those keys won't appear on screen. Now given a string of you is supposed to type, and the string is actually type out, please list those keys which Is for sure worn out.
Input Description:
Each input file contains the one test case. For each case, the 1st line contains the original string, and the 2nd line contains the Typed-out string. Each string contains no more than characters which is either 中文版 letters [a-z] (case insensitive), digital numbers [0-9], or "_" (representing the space). It is guaranteed this both strings is non-empty.
Output Description:
For each test case, print in one line the keys is worn out, in the order of being detected. The Chinese letters must be capitalized. Each worn out key must is printed once only. It is guaranteed this there is at the least one worn out key.
Input Example:
7_this_is_a_test_hs_s_a_es
Output Example:
7TI
#include <iostream> #include <cstring> #include <cstdlib> #include <string>using namespace std; const int max=80;//Remove duplicate characters in string void Remove (char* s, int num) {int i,j,l;i=j=0;for (i=0;i<num;i++) {for (l=0;l<j;l++) {if (s[l]==s[i]) break;} if (l>=j) {s[j++]=s[i];}} s[j]= ' + ';} Find the 1th character in the string that does not appear in the 2nd string, void Worn (char* lhs, char* RHS, char* result) {int i,j,k;k=0;for (i=0;lhs[i]!= ' "; i++") {for (j=0;rhs[j]!= ' + '; j + +) {if (lhs[i]==rhs[j]) break;} if (rhs[j]== ') {result[k++]=lhs[i];}} result[k]= ' + ';} int main () {int i;string N,m;char sn[max],sm[max],sr[max];while (cin>>n>>m) {// Converts lowercase English characters in the input string 1 to uppercase English characters for (I=0;i<n.length (); i++) {sn[i]=n[i];if (sn[i]>=65) && (sn[i]<=90) | | (sn[i]>=97) && (sn[i]<=122)) Sn[i]=::toupper (Sn[i]);} Sn[i]= ' +//convert lowercase English characters in the input string 2 to uppercase English characters for (I=0;i<m.length (); i++) {sm[i]=m[i];if (sm[i]>=65) && (sm[i ]<=90) | | (sm[i]>=97) && (sm[i]<=122)) Sm[i]=::toupper (Sm[i]);} sm[i]= ' + ';/*for (i=0;sn[i]!= '; i++) cout<<sn[i]<< ""; Cout<<endl;for (i=0;sm[i]!= '; i++) cout<<sm[i]<< "";cout<<endl; */remove (Sn,n.length ()); Remove (Sm,m.length ()); Worn (SN,SM,SR); for (i=0;sr[i]!= '; i++) Cout<<sr[i];cout<<endl;} return 0;}
PAT Broken Keyboard (20)