标签:eof clu 记录 malloc 输出 排列 测试结果 解决 class
Que1:两个字符串中的字符相同,出现的次数也相同,但是出现的顺序不同则认为这两个字符串是兄弟字符串。(eg:“ADB”和“DBA”就是兄弟字符串)现在提供一对字符串,如何确定他们是否是兄弟字符串?
采用散列表的方式来解决这个问题,由于不考虑排列的问题,所以只需要记录出现的次数就可以了!详细的程序如下所示:
1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 #include <stdbool.h> 5 6 bool StringBrother(const char *str0, const char *str1); 7 8 int main() 9 { 10 char *str0 = malloc(sizeof(char)*100); 11 char *str1 = malloc(sizeof(char)*100); 12 scanf("%s",str0); 13 scanf("%s",str1); 14 if(StringBrother(str0,str1)) 15 { 16 printf("GOOD BROTHER!\n"); 17 } 18 else 19 { 20 printf("NOT BROTHER!\n"); 21 } 22 return 0; 23 } 24 bool StringBrother(const char *str0, const char *str1) 25 { 26 int len0,len1,i,pos,param[26]={0}; 27 len0 = strlen(str0); 28 len1 = strlen(str1); 29 if(len0 != len1) return false; 30 printf("String‘s content:\n"); 31 for(i=0;i<len0;i++) 32 { 33 pos = *(str0+i) - ‘A‘; 34 param[pos] += 1; 35 pos = *(str1+i) - ‘A‘; 36 param[pos] -= 1; 37 printf("The param0[%d] is:%d\n",pos,param[pos]); 38 } 39 for(i=0;i<26;i++) 40 { 41 if(param[i] != 0) return false; 42 } 43 return true; 44 }
输出测试结果如下所示:
标签:eof clu 记录 malloc 输出 排列 测试结果 解决 class
原文地址:https://www.cnblogs.com/uestc-mm/p/8998207.html