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

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;
}

相关文章:

  • 【小程序】微信小程序课程 -2 快速上手
  • 鸿蒙开发(NEXT/API 12)【硬件(Pen Kit)】手写笔服务
  • HTML中的padding和margin
  • map(lambda x: x[0], sorted(count.items(), key=lambda x: (-x[1], x[0]))[:n])
  • mysql迁移postgreSql windows 工具
  • Redis的数据类型和编码方式
  • 上海电力大学《2020年+2021年830自动控制原理真题》 (完整版)
  • 二维数组的创建和初始化
  • 【高分系列卫星简介——高分辨率多模综合成像卫星】
  • tidb-一场select in百万参数引发的血案
  • 软件测试学习笔记丨curl命令发送请求
  • 前端框架的选择与考量:一场技术的盛宴
  • 电缆缺陷检测系统源码分享
  • 网页设计html心得
  • 数据对接 模板设计模式的使用
  • 「面试题」如何实现一个圣杯布局?
  • AHK 中 = 和 == 等比较运算符的用法
  • Angular 2 DI - IoC DI - 1
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • CSS3 变换
  • css布局,左右固定中间自适应实现
  • HTTP中GET与POST的区别 99%的错误认识
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • javascript从右向左截取指定位数字符的3种方法
  • javascript数组去重/查找/插入/删除
  • js操作时间(持续更新)
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • python 装饰器(一)
  • Sass 快速入门教程
  • Swift 中的尾递归和蹦床
  • Vue实战(四)登录/注册页的实现
  • Vue小说阅读器(仿追书神器)
  • 工作手记之html2canvas使用概述
  • 免费小说阅读小程序
  • Spring第一个helloWorld
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (2024,Flag-DiT,文本引导的多模态生成,SR,统一的标记化,RoPE、RMSNorm 和流匹配)Lumina-T2X
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (搬运以学习)flask 上下文的实现
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (状压dp)uva 10817 Headmaster's Headache
  • (自用)gtest单元测试
  • .NET Core跨平台微服务学习资源
  • .net wcf memory gates checking failed
  • .net 中viewstate的原理和使用
  • .Net(C#)自定义WinForm控件之小结篇
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .net6 当连接用户的shell断掉后,dotnet会自动关闭,达不到长期运行的效果。.NET 进程守护
  • .NET中 MVC 工厂模式浅析
  • .NET中统一的存储过程调用方法(收藏)
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • @LoadBalanced 和 @RefreshScope 同时使用,负载均衡失效分析