View Code of Problem 22

#include<bits/stdc++.h>
using namespace std;
int main(){
	char a[1001], b[1001];
	while(scanf("%s", a) != EOF) {
		scanf("%s", b);
		int lena = strlen(a);
		int lenb = strlen(b);
		sort(a, a+lena); //在比较开始之前就先排好序 
		sort(b, b+lenb);
		
		char ans[1001]; 
		memset(ans, 0, sizeof(ans)); //每次都要刷新ans数组。0和\0在memset中等价 
		int k = 0;
		for(int i=0; i<lena; i++){
			for(int j=0; j<lenb; j++){
				if(a[i] == b[j]){
					ans[k++] = a[i];
					b[j] = '*'; 
					break;
				}
			}
		}
		
		int len=strlen(ans);
  		for(int i=0;i<len;i++){
	    	if(ans[i] != ans[i+1]){  //消除掉相同字母,再输出 
	    		printf("%c", ans[i]);
			}  		
  		}
  		printf("\n");
	} 

	return 0;
}

Double click to view unformatted code.


Back to problem 22