04-4.1.1 串的定义和基本操作

  • 👋 Hi, I’m @Beast Cheng
  • 👀 I’m interested in photography, hiking, landscape…
  • 🌱 I’m currently learning python, javascript, kotlin…
  • 📫 How to reach me --> 458290771@qq.com

喜欢《数据结构》部分笔记的小伙伴可以订阅专栏,今后还会不断更新。🧑‍💻
此外,《程序员必备技能》专栏日后会逐步更新,感兴趣的小伙伴可以点一下订阅、收藏、关注!🚀
谢谢大家!🙏

定义

,即字符串(String) 是由零个或多个字符组成的有限序列
一般记为: S = ′ a 1 a 2 . . . . . . a n ′ ( n ≥ 0 ) S='a_1a_2 ......a_n'\,\,\,(n \geq 0) S=a1a2......an(n0)
其中,S是串名,单引号括起来的字符序列是串的值; a i a_i ai 可以是字母、数字或其他字符;串中字符的个数n称为串的长度 n = 0 n=0 n=0 时的串称为空串 (用 ∅ \emptyset 表示)
例:
S = "Hello World!"
T = "iPhone 11 Pro Max?"

  • 子串:串中任意个连续的字符组成的子序列。
    • 如:iPhonePro M,并且这个子串也可以是 0 个,也就是说,空串也是子串
  • 主串:包含子串的串。
    • 如:T 是 iPhone 的主串
  • 字符在主串中的位置:字符在串中的序号。
    • 如:1 在 T 中 的位置是 8(第一次出现)
  • 子串在主串中的位置:子串的第一个字符在主串中的位置。
    • 如:11Pro 在 T 中的位置为 8

所谓的空串空格串是不一样的:M='' M 是空串,N=' ' N 是空格串,中间有很多空格字符占位

串和线性表对比

串是一种特殊的线性表,数据元素之间呈线性关系
串的数据对象限定为字符集(如中文字符、英文字符、数字字符、标点字符等)
串的基本操作,如增删改查等通常以子串为操作对象

基本操作

假设有串 T = "" , S = "iPhone 11 Pro Max?" , W = "Pro"
StrAssign(&T, chars):赋值操作——把串 T 赋值为 chars
StrCopy(&T, S):复制操作——由串 S 赋值得到串 T
StrEmpty(S):判空操作——若S为空串,返回 true,否则返回 false
StrLength(S):求串长——返回串 S 元素的个数
ClearString(&S):清空操作——将 S 清为空串
DestroyString(&S):销毁串——将串 S 销毁(回收存储空间)
Concat(&T, S1, S2):串连接——用 T 返回由 S1 和 S2 连接而成的新串

  • 如:执行基本操作Concat(&T, S, W) 之后,T = "iPhone 11 Pro Max?Pro"
    SubString(&Sub, S, pos, len):求子串——用 Sub 返回串 S 的第 pos 个字符起 长度为 len 的子串
  • 如:执行基本操作SubString(&T, S, 4, 6) 之后,T = "one 11"
    Index(S, T):定位操作——若主串 S 中存在与串 T 值相同的子串,则返回它在主串 S 中第一次出现的位置;否则函数值为 0
  • 如:执行Index(S, W) 之后,返回值为 11
    StrCompare(S, T):比较操作——若 S > T ,则返回值 > 0;若 S = T ,则返回值 = 0;若 S < T,则返回值 < 0
  • 从第一个字符开始依次往后对比,先出现更大字符的串就更大
  • 长串的前缀和短串相同时,长串更大
  • 只有两个串完全相同时,才相等

字符集编码

字符集:

  • 英文字符——ASCII 字符集
  • 中英文——Unicode 字符集
    • 基于一个字符集,可以有多种编码方案,如:UTF-8,UTF-16
      注意:采用不同的编码方式,每个字符所占空间不同,考研中只需要默认每个字符占 1B 即可

拓展:乱码问题

很多时候,文件出现乱码的原因就在于:解码的方式出现了错误
也就是说,在你的文件中,原本采用某一套编码规则 y = f(x)
打开文件时,你的软件以为你采用的是另一套编码规则 y = g(x)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/25240.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Rust 实战丨SSE(Server-Sent Events)

&#x1f4cc; SSE&#xff08;Server-Sent Events&#xff09;是一种允许服务器向客户端浏览器推送信息的技术。它是 HTML5 的一部分&#xff0c;专门用于建立一个单向的从服务器到客户端的通信连接。SSE的使用场景非常广泛&#xff0c;包括实时消息推送、实时通知更新等。 S…

编程参考 - 使用静态连接库和动态链接库的区别

静态库链接和动态库链接是在程序中包含外部库的两种方法。这两种方法各有利弊。下面是静态库链接和动态库链接的详细比较&#xff1a; 静态库链接 静态链接包括在编译时将所有必要的库代码直接包含到可执行文件中。 优点&#xff1a; 可移植性&#xff1a; 可执行文件是自包…

数据结构笔记 3 串 数组 广义表

以下了解即可&#xff0c;暂时没发现有什么考点 参考&#xff1a; 【数据结构】——多维数组和广义表_数据结构loc-CSDN博客 相对应的题目&#xff1a; 他这个数组不是从0开始的&#xff0c;是从1开始的&#xff0c;所以为了配合公式要减1 下面这道题又不一样&#xff0c;它是…

【python深度学习】——torch.einsum|torch.bmm

【python深度学习】——torch.einsum|torch.bmm 1. 基本用法与示例2. torch.bmm 1. 基本用法与示例 基本用法: torch.einsum(equation, *operands)equation: 一个字符串&#xff0c;定义了张量操作的模式。 使用逗号来分隔输入张量的索引&#xff0c;然后是一个箭头&#xff…

linux中dd命令以及如何测试读写速度

dd命令详解 dd命令是一个在Unix和类Unix系统中非常常用的命令行工具&#xff0c;它主要用于复制文件和转换文件数据。下面我会详细介绍一些dd命令的常见用法和功能&#xff1a; 基本语法 dd命令的基本语法如下&#xff1a; bash Copy Code dd [option]...主要选项和参数 if…

Data Mining2 复习笔记6 - Optimization Hyperparameter Tuning

6. Optimization & Hyperparameter Tuning Why Hyperparameter Tuning? Many learning algorithms for classification, regression, … Many of those have hyperparameters: k and distance function for k nearest neighbors, splitting and pruning options in decis…

力扣1712.将数组分成三个子数组的方案数

力扣1712.将数组分成三个子数组的方案数 确定左边界的值 然后二分求右边界的范围 右边界处的前缀和满足 2*s[i] < s[r] < (s[n] s[i]) / 2 int s[100010];const int N 1e97;class Solution {public:int waysToSplit(vector<int>& nums) {int n nums.siz…

Mac清洁神器CleanMyMac2024一键轻松解决电脑垃圾问题

【CleanMyMac】苹果mac电脑垃圾清理软件 大家好&#xff01;今天我要给大家种草一个超级好用的苹果mac电脑垃圾清理软件&#xff0c;那就是 CleanMyMac。相信很多人都遇到过电脑运行速度变慢、存储空间不足的问题&#xff0c;而这款软件就是解决这些问题的救星&#xff01;让我…

2024眼睛健康展|江苏省护眼产品与眼部保健展会|眼科医疗展

呵护眼睛、守护光明&#xff0c;2024全国眼睛健康产业博览会暨眼科医学大会10月11日在南京启幕&#xff1b; 办展&#xff1a;随着时代的进步、社会的发展&#xff0c;特别是电子产品的深度普及&#xff1b;近些年&#xff0c;人们的用眼时间越来越久&#xff0c;由此产生高发…

一个python 程序执行顺序

1. Python程序执行顺序 在Python中&#xff0c;程序的执行顺序通常遵循几个基本原则&#xff1a; &#xff08;1&#xff09;从上到下&#xff1a;Python代码通常从上到下顺序执行。 &#xff08;2&#xff09;代码块&#xff1a;由缩进&#xff08;如空格或制表符&#xff…

20240605解决飞凌的OK3588-C的核心板刷机原厂buildroot不能连接ADB的问题

20240605解决飞凌的OK3588-C的核心板刷机原厂buildroot不能连接ADB的问题 2024/6/5 13:53 rootrootrootroot-ThinkBook-16-G5-IRH:~/repo_RK3588_Buildroot20240508$ ./build.sh --help rootrootrootroot-ThinkBook-16-G5-IRH:~/repo_RK3588_Buildroot20240508$ ./build.sh lun…

基于I2C协议的OLED显示(利用U82G库)

目录 一、I2C协议的基本原理和时序协议I2C通信协议的原理I2C时序基本单元I2C时序 二、建立工程RCC配置TIM1配置时钟树配置工程配置 三、U8g2移植精简u8g2_d_setup.c精简u8g2_d_memory.c编写移植函数stm32_u8g2.hstm32_u8g2.c 四、实验1.U82G的demo例程2.显示网名昵称中文取模步…

L48---1637. 两点之间不包含任何点的最宽垂直区域(排序)---Java版

1.题目描述 2.思路 &#xff08;1&#xff09;返回两点之间内部不包含任何点的 最宽垂直区域 的宽度。 我的理解是相邻两个点&#xff0c;按照等差数列那样&#xff0c;后一个数减去相邻的前一个数&#xff0c;才能保证两数之间不含其他数字。 &#xff08;2&#xff09;所以&…

c++|unordered系列关联式容器(unordered_set、unordered_map介绍使用+哈希结构)

目录 一、unordered_set的介绍与使用 1.1unordered_set介绍 1.2unordered_set使用 2.2.1构造 2.2.2容量 2.2.3修改 二、unordered_map的介绍与使用 2.1unordered_map介绍 2.2unordered_map使用 2.2.1构造 2.2.2容量 2.2.3修改 三、底层结构(哈希) 3.1哈希概念 3.2哈…

【回调函数】

1.回调函数是什么&#xff1f; 回调函数就是⼀个通过函数指针调用的函数。 如果你把函数的指针&#xff08;地址&#xff09;作为参数传递给另⼀个函数&#xff0c;当这个指针被用来调用其所指向的函数 时&#xff0c;被调用的函数就是回调函数。回调函数不是由该函数的实现方…

【PL理论】(12) F#:模块 | 命名空间 | 异常处理 | 内置异常 |:? | 相互递归函数

&#x1f4ad; 写在前面&#xff1a;本章我们将介绍 F# 的模块&#xff0c;我们前几章讲的列表、集合和映射都是模块。然后我们将介绍 F# 中的异常&#xff0c;以及内置异常&#xff0c;最后再讲解一下相互递归函数。 目录 0x00 F# 模块&#xff08;Module&#xff09; 0x01…

Bootstrap框架集成ECharts教程

最新公司项目要在原有的基础上增加一些饼状图和柱状图来统计一些数据给客户&#xff0c;下面就是集成的一个过程&#xff0c;还是很简单的&#xff0c;分为以下几步 1、引入ECharts的包 2、通过ECharts官网或者菜鸟教程直接拿示例代码过来修修改改直接用就可以了 注意&#xf…

Windows关闭自动更新最有效的方法

按WR打开电脑命令框输入“regedit”进入注册表 依次点击以下几个 右击新建一个“DWORD(32位)值”&#xff0c;命名为”FlightSettingsMaxPauseDays“ 右边选择十进制&#xff0c;左边填写暂停更新的天数 打开windows更新&#xff0c;进入高级选项 选择暂停更新的天数&#xff…

Fortigate防火墙二层接口的几种实现方式

初始配置 FortiGate出厂配置默认地址为192.168.1.99&#xff08;MGMT接口&#xff09;&#xff0c;可以通过https的方式进行web管理&#xff08;默认用户名admin&#xff0c;密码为空&#xff09;&#xff0c;不同型号设备用于管理的接口略有不同。 console接口的配置 防火墙…

4_1 Linux Centos7的RPM相关知识

4_1 Linux Centos7的RPM相关知识 文章目录 4_1 Linux Centos7的RPM相关知识1. RPM包文件名特征2. RPM软件包管理3. RPM包的一般安装位置4. RPM基本命令5. yum 系统环境centos7.9 临时挂载光盘文件&#xff1a;mount /dev/cdrom /dvd 1. RPM包文件名特征 * 软件名-版本信息.操作…