字符串的相关算法

字符串相关的算法整理 本文根据个人学习过程,积累一些常用知识。供后续参考学习。 字符串的相关的算法,一直是面试和项目中经常用到的。因此,在这里整理记录。字符串可以看成是字符类型的数组,因此可以将其和数组排序、数组查找和顺序调整有关的算法相结合。另外,字符串的比较和子字符串的操作,可以用来解决其他问题,比如一棵树是否和另一棵树的子树相匹配。 字符串操作包含很多基本知识点,如:回文的概念、字符匹配的问题、字典序问题、子 阅读详情

#include<iostream.h>
#include<string.h>
#include<malloc.h>
#define MaxLen 20
typedef struct
{
 char ch[MaxLen];
 int len;
}strtype;


void create(strtype *s,char str[])
{
 strcpy(s->ch,str);
 s->len=strlen(str);

}


int len(strtype *s)
{
 return s->len;
}


strtype *copy(strtype *s,strtype *t)
{
 for(int i=0;i<len(t);i++)
 {
  s->ch[i]=t->ch[i];
 }
 s->ch[len(t)]='\0';
 s->len=t->len;
 return s;
}


strtype *concat(strtype *s,strtype *t)
{
 if(len(s)+len(t)>MaxLen-1)
 {
  cout<<"长度不够"<<endl;
  return s;
 }
 int i,j;
 for(i=len(s),j=0;j<len(t);i++,j++)
 {
  s->ch[i]=t->ch[j];
 }
 s->ch[len(s)+len(t)]='\0';
 s->len=len(s)+len(t);
 return s;
}


strtype *ins(strtype *s,strtype *t,int i)
{
 int j,k;
 if(i<0 || i>len(s)+1)
 {
  cout<<"i不合理"<<endl;
  return s;
 }
 if(i+len(t)-1>MaxLen)
 {
  cout<<"空间不够"<<endl;
  return s;
 }
 if(i==1)
 {
  for(j=len(t),k=0;k<len(s);j++,k++)
   t->ch[j]=s->ch[k];
  t->ch[j]='\0';
  t->len=t->len+s->len;
  return t;
 }
 if(i==len(s))
  return concat(s,t);
 for(j=len(s)-1;j>=i-1;j--)
 {
  s->ch[j+len(t)]=s->ch[j];
 }
 s->ch[len(s)+len(t)]='\0';
 for(k=0,j=i-1;k<len(t);k++,j++)
  s->ch[j]=t->ch[k];
 return s;
}


strtype *del(strtype *s,int pos,int n)
{
 int i,j;
 if(pos+n>len(s))
 {
  cout<<"没那么多元素"<<endl;
  return s;
 }
 if(pos<0 || pos>len(s))
 {
  cout<<"pos不合格"<<endl;
  return s;
 }
 if(pos-1+n==len(s))
 {
  s->ch[pos-1]='\0';
  s->len=s->len-n;
  return s;
 }

 for(j=pos-1+n;j<=len(s);j++)
 {
  s->ch[j-n]=s->ch[j];
 }
 s->len=s->len-n;
 return s;
}

 

void dis(strtype *s)
{
 for(int i=0;i<len(s);i++)
  cout<<s->ch[i]<<" ";
 cout<<endl;
}

【计算摄影】相机成像原理:从光到JPEG图像 本文我们将从最基本的相机成像原理开始论述,再讨论光线进入相机后,经过一系列处理成为JPEG图像的大致流程。 阅读详情

相关推荐

OPNET网络仿真实验

外网

嚴 帅的博客 1万+

从串s中删除所有和串t相同的子串的算法

编写算法,从串s中删除所有和串t相同的子串。 StringType是串的一个抽象数据类型,它包含以下6种基本操作: void InitStr(StringType &s);   // 初始化s为空串。 void StrAssign(StringType &t, StringType s);   // 将s的值赋给t。s的实际参数是串变量。 int StrCompare(StringTy

积极奋斗的蜗牛 1万+

蓝牙Mesh协议一基本概念

前言 蓝牙SIG联盟在2017年发布了蓝牙Mesh1.0的协议规格,基于低功耗广播包来实现的多对多的通信技术,Mesh协议建立在BLE的物理层和链路层上,所以也可以和BLE的蓝牙进行通信 本章主要介绍蓝牙Mesh的基本概念和协议中的层级结构,也是参考网上的资料,如有异议,欢迎留言指正 基本概念 广播和洪泛 蓝牙Mesh技术是基于BLE的广播报文来实现的,是一种洪泛的消息传输机制,Mesh网络的节点间通过3个广播信道进行通信。当蓝牙Mesh网络中的节点收到消息后会转发这条消息,大大增加了网络的覆盖范围;但

9744

数据结构基础学习——字符串匹配KMP算法

数学功底偏弱,最近花了1天时间才理解了用于字符串匹配的KMP算法。 KMP算法是由 Knuth、Pratt 和 Morris 三个人同时发现的,因此取名为KMP,并不是什么功能性短语的缩写。该算法主要希望:“在字符串匹配的过程中尽可能地减少重复比较的次数,从而提高匹配效率”。 假设有源字符串S和模式字符串T,现在需要设计一个函数来查找S串中与T串相同的子串所在的位置i,若子串不存在,则返回0。 typedef struct string { uint Length; char *Ch; } S

Frankenstien_的博客 549

NACA0012的O型网格求解

本篇文章采用偏微分方程数值解法生成NACA0012翼型O型网格,并采用速度势方程求解绕NACA0012翼型迎角为0度时的低速不可压无粘流场。 文章目录一、求解网格1.翼型2.远场3.网格4.迭代5.求解二、求解流场1.偏微分方程2.迭代求解流场三、求解参数1.偏微分方程2.迭代求解四、导出数据 一、求解网格 1.翼型 本次求解网格和流场等采用的是NACA0012(修形)对称翼型,在NACA四位翼型中,第一位数字代表的是弯度,第二位数字代表的是弯度位置,后两位数字代表的是厚度,由于本次翼型的前两位数字都为0,

m0_50746433的博客 6677

Rclone替代RaiDrive?零广告免费挂载Alist WebDAV到Windows资源管理器(含自启脚本)

本文详细介绍了如何使用开源工具Rclone替代RaiDrive,实现零广告、全免费的Alist WebDAV挂载方案。通过深入解析配置参数、提供完整的自启动解决方案和解决常见问题,帮助用户在Windows资源管理器中高效管理云存储,提升使用体验。

weixin_33709364的博客 640

【算法】字符串相关

字符串是一种数据结构,大多与别的算法结合在一起出题,例如模拟、高精度算法、双指针、dp、回溯等,因此这个专题的题型本身是特别丰富的。本篇选取了较为典型的字符串题型,除了涵盖一些常用算法,还包括经常用到的容器、接口等。

NeeEk0的博客 1156

uniapp [安卓苹果App端] - 详细实现手机蓝牙连接打印机及打印票据小票/标签/面单/热敏小票订单/快递单等通用兼容适配解决方案,Uniapp对接蓝牙打印机支持各种主流品牌及打印指令,强悍插件

uni-app,安卓Android,苹果ios,安卓app端,苹果App端,uniapp苹果app,蓝牙打印机,uniappAPP实现通过蓝牙连接打印机打印,uniapp蓝牙连接打印机,安卓蓝牙打印插件,蓝牙打印机,蓝牙ble低功率及高功率打印机小票、标签、面单打印,手机PDA蓝牙打印插件,连接蓝牙打印机,蓝牙连接,打印文本、图片、条码、二维码,兼容斑马打印机、佳博打印机,TSC打印机,免费蓝牙打印机组件,蓝牙打印条码,蓝牙打印机连接,热敏蓝牙打印机,便携式打印机,打印机搜索不到,连接失败,发送打印命令

🏆 前端领域优质创作者 1万+

字符串相关算法

整体思路就是模拟列竖式计算两个数相乘的过程。但是为了书写代码的方便性,我们选择优化的版本,就是在计算两数相乘的时候,先不考虑进位,等到所有结果计算完毕之后,再去考虑进位。

2302_77179144的博客 634

【UML】-- 期末试题题库含答案(各章题目、选择题、填空题、简答题、画图题)

每章都有对应的题目和答案,选择题,填空简答,大题,答案已标红,方便大家观看

个人博客 1万+

基于PyQt5和OpenCV的传统图像分割应用UI程序

主要功能包括:加载和显示图像应用多种图像分割算法调整算法参数保存处理结果。

Henry的博客 473

C++ 字符串相关算法总结

字符串相关的算法 字典树 何为字典树 在n个字符串中查找某个字符串,就像用英语字典查单词一样 先翻第一个字母,然后是第二个,然后是第三个 查找任意单词,查找次数最多只需要这个单词的字母个数 实现与功能 根节点不包含字符,除根节点以外每个子节点都只包含一个字符 从根节点到某一个节点,路径上的字符连接起来,为该节点对应的字符串 每个节点的所有子节点包含的字符互不相同 通常在结点设置一个标志来标记该节点...

qq_43826794的博客 908

为Ollama本地大模型添加持久化记忆层:openclaw-ollama-memory项目详解

在构建基于大型语言模型(LLM)的对话应用时,上下文管理是核心技术挑战之一。其原理在于模型本身不具备跨会话的持久化记忆能力,每次请求都是独立的。这导致在多轮对话中,模型无法有效利用历史信息,用户体验割裂。从技术价值看,独立的记忆层通过解耦推理与存储,能突破模型固定上下文窗口的限制,实现更智能、连贯的交互。其核心应用场景包括聊天机器人、智能助手及需要长期记忆的复杂代理。本文聚焦的 openclaw-ollama-memory 项目,正是为 Ollama 生态提供的记忆层解决方案,它通过向量检索和智能摘要等机制

weixin_42521558的博客 313

字符串相关算法题

3. 无重复字符的最长子串

朱嫑膘的博客 316

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

你不懂的字符串相关算法都在这里!

真正搞透字符串常用办法,懂你的一些奇奇怪怪的疑惑点。

weixin_57140993的博客 2276

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

算法学习【3】字符串相关含KMP算法

面试经常会考察String相关问题,现把相关题目整理如下: 1、返回逆序字符串,如,"abc"->"cba",要求空间复杂度为O(1)      思路:首尾字符依次交换 public static char[] inverseOrder(char[] str, int st, int fh){ int len = fh-st+1; char temp; for(int i=0;i

tiandawangliang的专栏 701

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

18 道 Java 字符串相关算法题思路简介及代码实现

字符串(String)相关的问题占据着举足轻重的地位。这是因为字符串作为基本的数据类型之一,广泛应用于各类编程场景,包括但不限于数据传输、文件处理、用户界面展示、数据库操作、网络通信等。熟练掌握字符串操作不仅是日常编程工作的必备技能,也是评估面试者编程基础、逻辑思维和问题解决能力的重要依据

zp8126的专栏 1737

字符串相关操作、问题及算法提纲

这两天leetcode做完了三分之一,开始遇到瓶颈了,二叉树、链表

sdadssa1的专栏 384

字符串及相关算法

字符串的介绍及算法

swewing的博客 274

【LeetCode算法成长之路】Java字符串相关类总结与经典题目分析

本文小新为大家带来 Java字符串相关类总结与经典题目分析 相关知识,具体内容包括不可变字符序列String介绍(包括:String 的特性,构造器,String 与其他结构间的转换,基本常用方法,查找方法,字符串截取方法,开头与结尾判断方法,替换方法),可变字符序列StringBuffer与StringBuilder(包括:StringBuffer 与 StringBuilder 的理解,StringBuilder,StringBuffer 的 API)及相关经典题目进行详尽介绍~

小新要变强的博客 3168

【C++】字符串的基本操作和相关算法题

思路一、问题背景二、字符串的插入、删除和追加操作详解【C++】三、相关算法题【C++】 一、问题背景   首先来说字符串问题是十分经典的类型,我们经常会遇到输入是字符串的题目,然后利用各种STL标准库或者是一些动态规划的方法来求解问题,再或者是一些字符串遍历的一些技巧来提高效率等等,下边将介绍C++中相关的字符串常用操作函数以及我们可能常会遇到的算法问题。 二、字符串的插入、删除和追加操作详解【C++】 1. 字符串的插入(Insert函数) 1)在字符串s1的第p(从0开始数)个位置前插入字符串s2:s1

郝同学的博客 2469

String字符串相关算法

例一 题目描述: 判断字符串里括号是否成对出现 import java.util.HashMap; import java.util.Map; import java.util.Stack; public class matchJudger { // pair以右括号为key, 左括号为值 private Map<Character, Character> pa...

weixin_44212308的博客 260

有关字符串的相关算法

说明: 这篇博客是自己在学习的时候,遇到的比较好的,特此借鉴来学习,整理留存,方便学习之用。如有侵权之处,可以联系我删除,感谢牛人的分享。 学习: 字符串匹配的三个算法(KMP+字典树+AC自动机) AC自动机 AC自动机 算法详解(图解)及模板 AC自动机算法详解 (转载) Trie 树 小白详解 Trie 树 ...

wchzh2015的博客 323

数组与字符串相关的算法

最近在看 《程序员面试金典》,感觉书中的一些算法非常的精妙,所以本人对书中的每一个题目都着手实现了一遍,为了以后能够方便的重温这个知识,也为了能够将这个算法分享给 没看过这本书的小伙伴,于是本人决定将这些题目和算法写下来,当然我也只是写下题目和解法,不会对解法进行分析,想看具体分析可以买一本纸质书看一下,非常不错的一本书。1.1 实现一个算法,确定一个字符串的所有字符是否全都不同。假设不允许使用额外

Hwaphon 3438
上一篇: 队列的应用题目
下一篇: 字符串判断子串
蓝齐儿
博客等级 码龄17年 6粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值