藍橋杯 算法訓練 Anagrams問題【經典題】

C語言tolower()函數:將大寫字母轉換爲小寫字母

 

 

首先將所有字母都轉換成小寫字母,然後排序。若拍完序後的兩個串相等,則輸出Y,否則輸出N.

 

 

問題描述
  Anagrams指的是具有如下特性的兩個單詞:在這兩個單詞當中,每一個英文字母(不區分大小寫)所出現的次數都是相同的。例如,“Unclear”和“Nuclear”、“Rimon”和“MinOR”都是Anagrams。編寫一個程序,輸入兩個單詞,然後判斷一下,這兩個單詞是否是Anagrams。每一個單詞的長度不會超過80個字符,而且是大小寫無關的。
  輸入格式:輸入有兩行,分別爲兩個單詞。
  輸出格式:輸出只有一個字母Y或N,分別表示Yes和No。
  輸入輸出樣例
樣例輸入
Unclear
Nuclear
樣例輸出
Y

 

 

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>

char a[100];
char b[100];

int comp(const void *_a,const void *_b)
{
	char *a = (char *)_a;
	char *b = (char *)_b;
	return *a - *b;
}

int main()
{
	int i,len1,len2;
	scanf("%s%s",a,b);
	len1=strlen(a);
	len2=strlen(b);
	for(i=0;i<len1;i++)
	{
		a[i]=tolower(a[i]);
	}
	for(i=0;i<len2;i++)
	{
		b[i]=tolower(b[i]);
	}

	qsort(a,strlen(a),sizeof(char),comp);
	qsort(b,strlen(b),sizeof(char),comp);

	if(strcmp(a,b)==0)
		printf("Y\n");
	else
		printf("N\n");
	return 0;
}


 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章