标签:style strlen 完全 思路 iss 等于 字符 freopen pat
题意:给出两个字符串s1和s2(长度不超过1000),问s1是否包含s2中的所有字符,若包含,则输出Yes,并输出s1中多余的字符个数;若不完全包含,则输出No,并输出缺少的个数。
思路:定义数组int cnt[128],遍历字符串s1,记录各个字符出现的次数,cnt[i]表示i对应的字符出现的次数;然后遍历字符串s2,每访问一个字符,就把对应的cnt[i]减1,当遍历完了之后,若cnt[]均大于等于0,则说明s1含有s2的所有字符,输出Yes,以及strlen(s1)-strlen(s2);否则,说明s1不完全包含s2的所有字符,cnt[]中小于0的绝对值即为缺少的字符个数。
代码:
#include <cstdio> #include <cstring> int main() { //freopen("pat.txt","r",stdin); char str1[1005],str2[1005]; scanf("%s",str1); scanf("%s",str2); int cnt[128]={0}; int len1=strlen(str1); for(int i=0;i<len1;i++) cnt[str1[i]]++; int len2=strlen(str2); int miss=0; for(int i=0;i<len2;i++){ cnt[str2[i]]--; if(cnt[str2[i]]<0) miss++; } if(miss>0) printf("No %d",miss); else printf("Yes %d",len1-len2); return 0; }
标签:style strlen 完全 思路 iss 等于 字符 freopen pat
原文地址:https://www.cnblogs.com/kkmjy/p/9551583.html