读书人

电脑企业2013笔试题求高手持续加精

发布时间: 2013-07-09 09:50:48 作者: rapoo

计算机企业2013笔试题,求高手持续加精!
请教个问题
下列函数findchar的参数str是一字符串,该字符串中只有一个字符是单独出现的,其他字符都是成对出现,例如“acdbdgfcfag”,该函数返回字符串中单独出现的那个字符。要求写一个尽可能低的时间复杂度的算法。
char findchar(char *str) { }

请问如何实现一个低于O(N^2)的方法? 计算机 算法
[解决办法]
整个串异或,结果就是多出来的那个
印象中见过类似的题
[解决办法]
char szRet=str[0];
for (int i =1;i< strlen(str);i++)
szRet^=str[i];
return szRet;
[解决办法]

引用:
Quote: 引用:

整个串异或,结果就是多出来的那个
印象中见过类似的题


请问是不是说所有字母都成双出现时返回值就会变成0x0?


对的。因为异或运算满足交换律和结合律,可以把顺序调整成(aa)(bb)(cc)这样成对,每对结果都是0

读书人网 >C++

热点推荐