腾讯面试题假设两个字符串中所含有的字符和个数都相同我们就叫这两个字符串匹配,比如:abcda和adabc,由于出现的字符
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/09/22 05:34:24
腾讯面试题
假设两个字符串中所含有的字符和个数都相同我们就叫这两个字符串匹配,比如:abcda和adabc,由于出现的字符个数都是相同,只是顺序不同,所以这两个字符串是匹配的.要求高效
现在需要你来实现下面的函数:
boolen Is_Mach(char *str1,char *str2)
有人给出的代码如下,vc6.0上编译
#include
#define true 1
#define false 0
typedef int boolean;
boolean Is_Mach(char *str1,char *str2) {
int cnt[256] = {0}, i;
char *p1 = str1, *p2 = str2;
if ( p1 == p2 )
return true;
if ( p1 == NULL || p2 == NULL )
return false;
while ( *p1 && *p2 )
cnt[ *p1++ ]++, cnt[ *p2++ ]--;
if ( *p1 != *p2 )
return false;
for ( i=0; i
假设两个字符串中所含有的字符和个数都相同我们就叫这两个字符串匹配,比如:abcda和adabc,由于出现的字符个数都是相同,只是顺序不同,所以这两个字符串是匹配的.要求高效
现在需要你来实现下面的函数:
boolen Is_Mach(char *str1,char *str2)
有人给出的代码如下,vc6.0上编译
#include
#define true 1
#define false 0
typedef int boolean;
boolean Is_Mach(char *str1,char *str2) {
int cnt[256] = {0}, i;
char *p1 = str1, *p2 = str2;
if ( p1 == p2 )
return true;
if ( p1 == NULL || p2 == NULL )
return false;
while ( *p1 && *p2 )
cnt[ *p1++ ]++, cnt[ *p2++ ]--;
if ( *p1 != *p2 )
return false;
for ( i=0; i
这个算法利用计数已经达到O(n)的时间复杂度了,只对两个输入做了一遍扫描.空间复杂度也有所改进,从两个数组减少为一个数组,提前判断也做了,我想象不到还有什么算法能够更快.
只是数组256这里有点小问题.使用数组256表示作者希望能对0x80之后的字符进行计数,但这句话“cnt[ *p1++ ]++”有问题:*p1如果大于0x80,那么它是一个负数,这会造成错误的元素被计数,应该加个unsigned char做下限定.
只是数组256这里有点小问题.使用数组256表示作者希望能对0x80之后的字符进行计数,但这句话“cnt[ *p1++ ]++”有问题:*p1如果大于0x80,那么它是一个负数,这会造成错误的元素被计数,应该加个unsigned char做下限定.
从键盘输入两个字符串a和b,要求不用库函数strcat,把字符串b前面的五个字符连接到a 后面
求解C语言程序设计题:两个字符串s1,s2写函数比较后返回不同的字符的个数
用plsql怎么统计一个字符串中相同字符的个数;例如 'aa;bb;cc;dd;ee;ff;gg',
EXCEL中 如何统计某个单元格内字符串中,特定字符的个数?
判断题1、字符型数据和整数之间是不可以通用的.2、在C语言中,字母的大小写不被区分.3、字符常数和字符串常数的存储是相同
C语言,编写一个函数squeeze(s1,s2),能从字符串s1中删去所有与字符串s2中相同的字符.
写一个函数,输出字符串中字符的所有排序.(比如:abc acb bac bca cab cba )
ACM DP动态规划题 :通过加入字符,使一字符串对称,求加入字符的最小个数.
用vf怎样编辑程序“输入一个字符串,要求分别统计出其中英文字母,空格,数字和其他字符的个数?”
用C写个编程输入一个完全由数字组成的字符串,从字符串的第一个字符开始,每两个数字作为两位整数,存放在一维整型数组中,如果
帮忙看看哪里错了~~编写一个,功能是:返回字符串中指定字符的个数.在主函数中读入一个字符串,并读入一个要统计的字符,调用
C语言 编写按以下加密规则对指定的加密钥匙KEY和原文字符串的加密函数 设原文字符串有n个字符.