编辑代码

#include <string.h>
#include <stdio.h>
int canFormPalindrome(int n, int m, char * s1, char *s2) {
	int freq1[26],freq2[26];
    for(int i=0;i<26;i++){
        freq1[i]=0;
        freq2[i]=0;
    }
    char c;
	for (int i=0;i<strlen(s1);i++) {
        c=s1[i];
		freq1[c - 'a']++;
	}
	for (int i=0;i<strlen(s2);i++) {
        c=s2[i];
		freq2[c - 'a']++;
	}
	int haveCommon = 0;
	for (int i = 0; i < 26; ++i) {
		if (freq1[i] > 0 && freq2[i] > 0) {
			haveCommon = 1;
			break;
		}
	}
	if (haveCommon==0) {
		return 0;
	}
	int totalFreq[26];
	for (int i = 0; i < 26; ++i) {
		totalFreq[i] = freq1[i] + freq2[i];
	}
	int oddCount = 0;
    int count;
	for (int i=0;i<26;i++) {
        count=totalFreq[i];
		if (count % 2 == 1) {
			oddCount++;
		}
	}
	if ((n + m) % 2 == 0) {
        if(oddCount == 0) return 1;
		else return 0;
	}
	else {
        if(oddCount == 1) return 1;
		else return 0;
	}
}
int main()
{
	int C;
	printf("请输入数据组数:");
    scanf("%d",&C);
	for (int i = 0; i < C; ++i) {
		int n, m;
		char* s1, s2;
        printf("请输入第%d组2个字符串的长度和两个字符串:",i);
        scanf("%d %d %s %s",&n,&m,&s1,&s2);
		if(canFormPalindrome(n, m, s1, s2)==1) printf("YES\r\n")
        else printf("NO\r\n");
	}
	printf("程序执行完成,请按a键结束.....");
	char reciveChar;
	while (1) {
		reciveChar = getchar();
		if (reciveChar == 'a') break;
	}
	return 0;
}