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

2024-06-09 19:20
文章标签 定义 基本操作 04 4.1

本文主要是介绍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)

这篇关于04-4.1.1 串的定义和基本操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1046069

相关文章

C 语言中enum枚举的定义和使用小结

《C语言中enum枚举的定义和使用小结》在C语言里,enum(枚举)是一种用户自定义的数据类型,它能够让你创建一组具名的整数常量,下面我会从定义、使用、特性等方面详细介绍enum,感兴趣的朋友一起看... 目录1、引言2、基本定义3、定义枚举变量4、自定义枚举常量的值5、枚举与switch语句结合使用6、枚

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

Spring 源码解读:自定义实现Bean定义的注册与解析

引言 在Spring框架中,Bean的注册与解析是整个依赖注入流程的核心步骤。通过Bean定义,Spring容器知道如何创建、配置和管理每个Bean实例。本篇文章将通过实现一个简化版的Bean定义注册与解析机制,帮助你理解Spring框架背后的设计逻辑。我们还将对比Spring中的BeanDefinition和BeanDefinitionRegistry,以全面掌握Bean注册和解析的核心原理。

取得 Git 仓库 —— Git 学习笔记 04

取得 Git 仓库 —— Git 学习笔记 04 我认为, Git 的学习分为两大块:一是工作区、索引、本地版本库之间的交互;二是本地版本库和远程版本库之间的交互。第一块是基础,第二块是难点。 下面,我们就围绕着第一部分内容来学习,先不考虑远程仓库,只考虑本地仓库。 怎样取得项目的 Git 仓库? 有两种取得 Git 项目仓库的方法。第一种是在本地创建一个新的仓库,第二种是把其他地方的某个

浙大数据结构:树的定义与操作

四种遍历 #include<iostream>#include<queue>using namespace std;typedef struct treenode *BinTree;typedef BinTree position;typedef int ElementType;struct treenode{ElementType data;BinTree left;BinTre

浙大数据结构:04-树7 二叉搜索树的操作集

这道题答案都在PPT上,所以先学会再写的话并不难。 1、BinTree Insert( BinTree BST, ElementType X ) 递归实现,小就进左子树,大就进右子树。 为空就新建结点插入。 BinTree Insert( BinTree BST, ElementType X ){if(!BST){BST=(BinTree)malloc(sizeof(struct TNo

【CSS in Depth 2 精译_023】第四章概述 + 4.1 Flexbox 布局的基本原理

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一章 层叠、优先级与继承(已完结) 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位(已完结) 2.1 相对单位的威力2.2 em 与 rem2.3 告别像素思维2.4 视口的相对单位2.5 无单位的数值与行高2.6 自定义属性2.7 本章小结 第三章 文档流与盒模型(已

类和对象的定义和调用演示(C++)

我习惯把类的定义放在头文件中 Student.h #define _CRT_SECURE_NO_WARNINGS#include <string>using namespace std;class student{public:char m_name[25];int m_age;int m_score;char* get_name(){return m_name;}int set_name

c++ 定义二位数组

在 C++ 中,定义二维数组有几种常见的方式。以下是几个示例: 1. 静态二维数组 定义: int array[3][4]; 这里,array 是一个 3 行 4 列的整数二维数组。 初始化: int array[3][4] = {{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12}}; 2. 动态二维数组 使用指针和动态内存分配: 定义:

读软件设计的要素04概念的关系

1. 概念的关系 1.1. 概念是独立的,彼此间无须相互依赖 1.1.1. 一个概念是应该独立地被理解、设计和实现的 1.1.2. 独立性是概念的简单性和可重用性的关键 1.2. 软件存在依赖性 1.2.1. 不是说一个概念需要依赖另一个概念才能正确运行 1.2.2. 只有当一个概念存在时,包含另一个概念才有意义 1.3. 概念依赖关系图简要概括了软件的概念和概念存在的理