当前位置: 首页 > article >正文

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);//滑动窗口哈希表初始化为0
    int * b = malloc(sizeof(int) * 26);//p哈希表初始化为0
    memset(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;
}

http://www.kler.cn/a/321476.html

相关文章:

  • 生成自签名证书并配置 HTTPS 使用自签名证书
  • FFmpeg 4.3 音视频-多路H265监控录放C++开发十三.2:avpacket中包含多个 NALU如何解析头部分析
  • 2个word内容合并
  • python 2小时学会八股文-数据结构
  • 基于RK3568J多网口电力可信物联网关解决方案
  • 深入探索:Scrapy深度爬取策略与实践
  • AI 驱动旅游创业新机遇,旅游卡与共享旅游的融合发展
  • 微服务-流量染色
  • 【Gitee自动化测试2】Git,Github,Gitlab,Gitee
  • Java抽象教程!(* ̄;( ̄ *)
  • SQL 查询优化与实战
  • Laravel部署后,CPU 使用率过高
  • 为什么不用tensorflow而用opencv
  • 企微群管理软件:构建高效社群运营的新引擎
  • C 标准库 - <ctype.h>
  • 实战OpenCV之色彩空间转换
  • 第一个maven web工程(eclipse)
  • 【UE5】将2D切片图渲染为体积纹理,最终实现使用RT实时绘制体积纹理【第三篇-着色器光照】
  • 代码随想录打卡Day39
  • 【devops】devops-ansible模块介绍
  • 卷积神经网络-迁移学习
  • Spire.PDF for .NET【页面设置】演示:对PDF 文件进行分页
  • 【ASE】第一课_双面着色器
  • 增量式编码器实现原理
  • 使用python爬取豆瓣网站?如何简单的爬取豆瓣网站?
  • FPGA中系统门数和逻辑门数的理解