

本题使用了字符串book 用来标记店家的珠子以及顾客的珠子
//大写字符A到Z的ASCII代码分别是065到090,字符加一,代码加一。
//小写字符a到z的ASCII代码分别是097到122,依旧是字符加一,代码加一
//ASCII码48~57为0到9十个阿拉伯数字。
#include<stdio.h>
#include<string.h>
char book1[123]={0},book2[123]={0};
int main()
{
int i,sum1=0,sum2=0,ret=1;
char str1[1001],str2[1001];
for(i=0;i<48;i++) //初始化那些非字母非数字的字符
{
book1[i]=' ';
book2[i]=' ';
}
for(i=58;i<65;i++)
{
book1[i]=' ';
book2[i]=' ';
}
for(i=91;i<97;i++)
{
book1[i]=' ';
book2[i]=' ';
}
gets(str1);
gets(str2);
for(i=0;i<strlen(str1);i++)
{
book1[str1[i]]++;
}
for(i=0;i<strlen(str2);i++)
{
book2[str2[i]]++;
}
for(i=48;i<=122;i++)
{
if(book1[i]!=' '&&book2[i]!=' '&&book1[i]<book2[i]) //缺少她想要的珠子
{
ret=0;sum2+=(book2[i]-book1[i]);//计算缺少的珠子
}
}
if(ret==1)
{
printf("Yes %d",strlen(str1)-strlen(str2));
}
else{
printf("No %d",sum2);
}
return 0;
}
该程序主要处理两个字符串,检查是否能通过字符交换使它们相等。它初始化字符计数器,读取字符串,然后比较每个字符的ASCII值。如果在某个位置第一个字符串的字符少于第二个字符串,程序会计算缺少的字符数并返回结果。若无法通过字符交换达到相等,程序会输出缺少的字符数量。
5481

被折叠的 条评论
为什么被折叠?



