字符串匹配问题
2012-10-06 18:47
183 查看
题目描述:
假设两个字符串中所含有的字符和个数都相同我们就叫这两个字符串匹配,比如:abcda和adabc,
由于出现的字符个数都是相同,只是顺序不同,所以这两个字符串是匹配的。
要求高效实现下面的函数: boolen IsMatch(const char *str1, const char *str2)
给出代码(主要思想看代码即知):
上述代码,需要对str1进行一次完整遍历,对str2在最坏情况下需要进行一次完整遍历(大多是str1和str2匹配的情况),
所以一般只需对str2进行部分遍历就可以了,时间复杂度O(N)
假设两个字符串中所含有的字符和个数都相同我们就叫这两个字符串匹配,比如:abcda和adabc,
由于出现的字符个数都是相同,只是顺序不同,所以这两个字符串是匹配的。
要求高效实现下面的函数: boolen IsMatch(const char *str1, const char *str2)
给出代码(主要思想看代码即知):
bool IsMatch(const char *str1, const char *str2) { if( str1==NULL || str2 == NULL ) return false; unsigned int counter[128]={0}; while(*str1!='\0') counter[*str1++]++; while(*str2!='\0') { counter[*str2++]--; if( counter < 0 ) return false; } for( int i=0; i<255; i++ ) if( counter[i] != 0 ) return false; return true; }
上述代码,需要对str1进行一次完整遍历,对str2在最坏情况下需要进行一次完整遍历(大多是str1和str2匹配的情况),
所以一般只需对str2进行部分遍历就可以了,时间复杂度O(N)
相关文章推荐
- 一个跟正则有关的字符串匹配问题
- 字符串匹配问题
- poj-3461 kmp字符串匹配问题
- 一个海量字符串匹配问题
- 正则+split 解决国航项目获取字符串匹配问题
- HNU OJ题库1005F字符串匹配问题
- 玩转经典算法之字符串匹配(一) 问题引入和朴素的匹配算法
- 字符串匹配问题
- 字符串匹配问题
- 带有通配符的两个字符串匹配问题
- 字符串匹配问题
- python 字符串匹配问题
- 1005: 字符串匹配问题
- 中文字符串匹配问题
- 【算法】字符串匹配问题
- 含通配符的字符串匹配问题
- 常见算法及问题场景——字符串匹配
- 字符串匹配问题——KMP算法
- LeetCode 44 Wildcard Matching(字符串匹配问题)
- 子字符串substring 问题 - KMP 字符串匹配算法备忘录