[经典面试题][腾讯]字符串匹配
2015-02-14 11:03
337 查看
题目
假设两个字符串中所含有的字符和个数都相同我们就叫这两个字符串匹配,比如:abcda和adabc,由于出现的字符个数都是相同,只是顺序不同,所以这两个字符串是匹配的。要求高效。
思路
假定字符串中都是ASCII字符。用一个数组来计数,前者加,后者减,全部为0则匹配。
代码
假设两个字符串中所含有的字符和个数都相同我们就叫这两个字符串匹配,比如:abcda和adabc,由于出现的字符个数都是相同,只是顺序不同,所以这两个字符串是匹配的。要求高效。
思路
假定字符串中都是ASCII字符。用一个数组来计数,前者加,后者减,全部为0则匹配。
代码
/*--------------------------------------------- * 日期:2015-02-14 * 作者:SJF0115 * 题目: 字符串匹配 * 来源:腾讯 * 博客: -----------------------------------------------*/ #include <iostream> #include <cstring> using namespace std; class Solution { public: bool StrMatch(string str1,string str2){ int size1 = str1.size(); int size2 = str2.size(); if(size1 <= 0 || size2 <= 0 || size1 != size2){ return false; }//if int count[256]; // 初始化 memset(count,0,sizeof(count)); // 前者加 for(int i = 0;i < size1;++i){ ++count[str1[i]]; }//for //后者减 for(int i = 0;i < size2;++i){ --count[str2[i]]; }//for // 全部为0则匹配 for(int i = 0;i < 256;++i){ if(count[i] != 0){ return false; }//if }//for return true; } }; int main() { Solution solution; string str1("afafafa"); string str2("afafaf"); cout<<solution.StrMatch(str1,str2)<<endl; }
相关文章推荐
- [经典面试题][腾讯]字符串匹配
- 腾讯关于字符串匹配的面试题
- 腾讯关于字符串匹配的面试题
- 一道腾讯关于字符串匹配的面试题
- 字符串匹配经典算法讲解
- [各种面试题] 字符串匹配查询
- 经典面试题(二)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
- 经典面试题(一)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
- 经典算法设计:动态规划(2)字符串匹配
- 经典面试题(三)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
- 经典面试题(二)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
- 经典面试题(四)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
- 经典面试题(四)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
- 经典面试题(三)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
- [经典面试题][腾讯]选择原料工厂(最短距离问题)
- 经典面试题(四)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
- 腾讯经典面试题
- 经典面试题(四)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
- 字符串匹配, Zenefits的面试题
- 经典面试题(三)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯