欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > C语言 | Leetcode C语言题解之第438题找到字符串中所有字母异位词

C语言 | Leetcode C语言题解之第438题找到字符串中所有字母异位词

2024/10/23 11:48:35 来源:https://blog.csdn.net/m0_59237910/article/details/142582014  浏览:    关键词:C语言 | Leetcode C语言题解之第438题找到字符串中所有字母异位词

题目:

题解:

/*** Note: The returned array must be malloced, assume caller calls free().*/
/*
*int strCmpn:比较滑动窗口和字符串的相同值
char * s:字符串s,滑动窗口的位置
char * p:字符串p,比较字符串
int n:滑动窗口的起始位置
int p_len:字符串p的长度
返回值:相同返回0,不相同返回不相同元素个数
*/
int strCmpn(char * s, char * p , int n , int p_len)
{int * a = malloc(sizeof(int) * 26);//滑动窗口哈希表初始化为0int * b = malloc(sizeof(int) * 26);//p哈希表初始化为0memset(a, 0, sizeof(a));memset(b, 0, sizeof(b));int i = n;int j = 0;for(i,j; j < p_len; i++, j++)//对滑动窗口,p进行遍历赋值{int t_a = s[i] - 'a';int t_b = p[j] - 'a';a[t_a]++;b[t_b]++;}int sum = 0;for(j = 0; j < 26; j++)//相同返回sum为0,不相同返回不相同元素{sum += abs(a[j] - b[j]);}free(a);free(b);return sum; 
}
/*
*int* findAnagrams:寻找p在s中元素相同的子字符串
char * s:比较字符串
char * p:目标字符串
int* returnSize:返回值长度
返回值:相同元素的初始下标
*/
int* findAnagrams(char * s, char * p, int* returnSize){int i;int p_len = strlen(p);int s_len = strlen(s);*returnSize=0;if(s_len < p_len){return NULL;}int * ans = malloc(sizeof(int) * 30000);for(i = 0; i < s_len-p_len+1; i++)//移动滑动窗口{if(strCmpn(s, p, i, p_len) == 0){ans[(*returnSize)++] = i;}}return ans;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com