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 }
输出测试结果如下所示:
Que2:数字转字符串C语言函数实现方法,任意一个int整数类型的数据转换为string类型
1 int num2str(char *str,int num) // 返回len 2 { 3 int temp, i = 0, j; 4 while (1) { // Transform the number 5 temp = num % 10; 6 str[i] = char(temp + 48); 7 i++; 8 num /= 10; 9 if (num == 0) break; 10 } 11 for (j = 0; j < i / 2; j++) { // reverse the number 12 temp = str[j]; 13 str[j] = str[i - j - 1]; 14 str[i - j - 1] = temp; 15 } 16 return i; 17 }
char *str为保存字符串数据的地址空间
int num为需要转换的整型数据
函数的返回值为字符串的长度int len