一道腾讯面试题
来源:互联网 发布:极有有趣的段子知乎 编辑:程序博客网 时间:2024/06/10 10:15
题目描述:
假设两个字符串中所含有的字符和个数都相同我们就叫这两个字符串匹配,比如:abcda和adabc,由于出现的字符个数都是相同,只是顺序不同,所以这两个字符串是匹配的。要求高效!
我的解法是借用 异或运算,在长度相同的情况下,对所有的字符进行累积异或,由异或的性质,相同的数异或为0,异或满足交换律。时间只有O(n)
代码如下:
- /************************************************************************/
- /*
- 假设两个字符串中所含有的字符和个数都相同我们就叫这两个字符串匹配,
- 比如:abcda和adabc,由于出现的字符个数都是相同,只是顺序不同,
- 所以这两个字符串是匹配的。要求高效!
- */
- /************************************************************************/
- #include <IOSTREAM>
- #include <string>
- #include <ASSERT.H>
- using namespace std;
- bool isStrMatching(const char* str1,const char* str2)
- {
- assert( str1!=NULL && str2!=NULL);
- int len1=strlen(str1);
- int len2=strlen(str2);
- if( len1 != len2 )
- return false;
- int flag=0,i=0;
- for(;i<len1;i++)
- flag^=( str1[i]^str2[i] );
- return (flag==0);
- }
- void main()
- {
- char str1[]="abcda";
- char str2[]="adabc";
- if( isStrMatching(str1,str2) )
- cout<<"yes.\n";
- else
- cout<<"no.\n";
- }
- 一道腾讯面试题
- 一道腾讯面试题
- 一道腾讯面试题 .
- 一道腾讯面试题
- 一道腾讯面试题
- 腾讯一道面试题
- 试着解一道腾讯面试题
- 腾讯的一道面试题
- 一道腾讯安全部面试题
- 腾讯的一道面试题
- 一道腾讯的面试题
- 腾讯的一道面试题
- 腾讯的一道面试题
- 腾讯的一道面试题
- 腾讯一道找中位数的面试题
- 一道腾讯公司的面试题
- 腾讯的一道Script面试题
- 一道腾讯面试题:英语单词拼写检查
- 2012 我的腾讯暑假实习笔试面试经历-机会要靠自己争取,机会是给有准备的人
- 普通母函数的原理及实现
- 计算机组成原理
- 输入描述
- 除了坚强, 我们别无选择。
- 一道腾讯面试题
- 1061--青蛙的约会
- java获取当前类的路径
- redis 2.6 新功能介绍及安装相关问题
- JavaReflect
- CMap
- 创新工场一道编程题
- java Myeclipse配置suv的方法
- Java之本地方法