一道腾讯面试题
2012-10-29 12:53
218 查看
题目描述:
假设两个字符串中所含有的字符和个数都相同我们就叫这两个字符串匹配,比如:abcda和adabc,由于出现的字符个数都是相同,只是顺序不同,所以这两个字符串是匹配的。要求高效!
我的解法是借用 异或运算,在长度相同的情况下,对所有的字符进行累积异或,由异或的性质,相同的数异或为0,异或满足交换律。时间只有O(n)
代码如下:
[cpp]
view plaincopyprint?
/************************************************************************/
/*
假设两个字符串中所含有的字符和个数都相同我们就叫这两个字符串匹配,
比如: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";
}
假设两个字符串中所含有的字符和个数都相同我们就叫这两个字符串匹配,比如:abcda和adabc,由于出现的字符个数都是相同,只是顺序不同,所以这两个字符串是匹配的。要求高效!
我的解法是借用 异或运算,在长度相同的情况下,对所有的字符进行累积异或,由异或的性质,相同的数异或为0,异或满足交换律。时间只有O(n)
代码如下:
[cpp]
view plaincopyprint?
/************************************************************************/
/*
假设两个字符串中所含有的字符和个数都相同我们就叫这两个字符串匹配,
比如: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";
}
相关文章推荐
- 腾讯的一道面试题
- 小伙伴们 ,今天做了腾讯的一道变量提升的面试题,试一试看你能否进腾讯!
- 一道腾讯的面试题,关于a和&a
- 腾讯的一道Script面试题
- 腾讯一道找中位数的面试题
- 腾讯的一道面试题—不用除法求数字乘积
- 一道腾讯面试题
- 腾讯的一道面试题
- 一道腾讯的面试题,关于a和&a
- 学生问的一道javascript面试题[来自腾讯]
- 看网友的一道腾讯面试题有感
- 一道腾讯面试题,自己解出,供大家参考参考
- 腾讯高级工程师:一道面试题引发的高并发性能调试思考
- 一道腾讯面试题
- 一道腾讯关于字符串匹配的面试题
- [js高手之路]学生问的一道javascript面试题[来自腾讯]
- 试着解一道腾讯面试题
- 腾讯高级工程师:一道面试题引发的高并发性能调试思考
- 一道腾讯面试题的思考:到底谁会赢?
- 腾讯一道面试题