首页 > 试题广场 >

实现函数,找出2个字符串中都出现的字符,并返回。

[问答题]
实现函数,找出2个字符串中都出现的字符,并返回。函数原型为char *getstr(const char *str1, cosnt char *str2){}。
我自认为比较 比较好。

//2个字符串中都出现的字符,并返回。
char *getstr(const char *str1, const char *str2)
{
 const int MAX = 256;//char 类型最大数
 char charFlag[MAX] = { 0 };//字符转换成int 当作数组下标,并记录出现数。
 char  returnstr[MAX] = { 0 };
 int i = 0;
 for (const char * temp = str1; *temp != '\0'; temp++)
 {
 charFlag[*temp - '\0']++;
 }
 //检查str2是否出现charFlag[]出现的字符,如果出现,记录返回。
 for (const char * temp2 = str2; *temp2 != '\0'; temp2++)
 {
 if (charFlag[*temp2 - '\0'])//说明str2的字符也在str1出现
 {
 //检查是否已经加入返回数组里
 bool isExist = false;
 for (int index = 0; index <= i; index++)
 {
 if (returnstr[index] == *temp2)
 {
 //已经在返回数组里
 isExist = true;
 break;
 }
 }
 if (!isExist)
 {

 returnstr[i] = *temp2;
 i++;
 }
 }
 }
 return returnstr;

}
 int main(int argc, _TCHAR* argv[]) { char str[] = "hello every one"; char str2[] = " good bye ,thank you."; char * str3 = NULL; str3 = getstr(str, str2); return 0; }

发表于 2015-01-21 10:46:50 回复(0)