【基础数据结构】字符串

一、字符串输入

1.scanf("%s",str);分隔符为空格、制表符、回车

2.fgets(str,10,stdin);10为字符串char str[10]长度,可以读取空格字符的字符串,10代表最大读取长度,最多读取9个字符,这个函数自动在读取到换行符停止,删除\n才能正确输出

str[strlen(str)-1]='\0';

printf("%s\n",str);

二、字符串输出

1.printf("%s\n",str);

2.puts(str);自动在末尾加上\n,不支持格式化输出

三、字符数组

char arr[size];

arr[0]='H';

arr[1]='e';

arr[2]='l';

arr[3]='l';

arr[4]='o';

arr[5]='\0';

四、字符串

char str[]="Hello,world!";

str[0]='h';

char str[]={'H','e','l','l','o','!','\0'};

char arr[13]="Hello,world!";

char *str=arr;

五、标准库函数

strlen(str);获取字符串长度

strcmp(str1,str2);比较两个字符串是否相等

strcpy(dest,src);将源字符串复制到目标字符串中

strcat(dest,src);将源字符串加入到目标字符串末尾

六、例题

例题1

最长特殊序列 Ⅰ

给你两个字符串 a 和 b,请返回 这两个字符串中 最长的特殊序列  的长度。如果不存在,则返回 -1 。

「最长特殊序列」 定义如下:该序列为 某字符串独有的最长子序列(即不能是其他字符串的子序列) 。

字符串 s 的子序列是在从 s 中删除任意数量的字符后可以获得的字符串。

  • 例如,"abc" 是 "aebdc" 的子序列,因为删除 "aebdc" 中斜体加粗的字符可以得到 "abc" 。 "aebdc" 的子序列还包括 "aebdc" 、 "aeb" 和 "" (空字符串)。

示例 1:

输入: a = "aba", b = "cdc"
输出: 3
解释: 最长特殊序列可为 "aba" (或 "cdc"),两者均为自身的子序列且不是对方的子序列。

示例 2:

输入:a = "aaa", b = "bbb"
输出:3
解释: 最长特殊序列是 "aaa" 和 "bbb" 。

示例 3:

输入:a = "aaa", b = "aaa"
输出:-1
解释: 字符串 a 的每个子序列也是字符串 b 的每个子序列。同样,字符串 b 的每个子序列也是字符串 a 的子序列。

提示:

  • 1 <= a.length, b.length <= 100
  • a 和 b 由小写英文字母组成

要解决这个问题,我们需要理解什么是特殊序列。

根据题目的定义,最长特殊序列是某个字符串独有的最长子序列,即不能是其他字符串的子序列。

我们可以按照以下思路来解决这个问题:

  1. 如果字符串 a 和字符串 b 相等,那么它们没有特殊序列,返回 -1。
  2. 否则,返回两个字符串长度的较大值,因为每个字符串本身就是它们自己的特殊序列,而不可能是对方的子序列。

在上述代码中,我们定义了一个函数 `findLUSlength` 来计算最长特殊序列的长度。在 `main` 函数中,我们给出了示例输入,然后调用 `findLUSlength` 函数来计算最长特殊序列的长度,并输出结果。

#include <stdio.h>
#include <string.h>int findLUSlength(char *a, char *b) {int lenA = strlen(a);int lenB = strlen(b);if (strcmp(a, b) == 0) {return -1;}return lenA > lenB ? lenA : lenB;
}int main() {char a[] = "aba";char b[] = "cdc";int result = findLUSlength(a, b);printf("最长特殊序列的长度为:%d\n", result);return 0;
}

例题2

URL化

URL化。编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作。)

示例 1:

输入:"Mr John Smith    ", 13
输出:"Mr%20John%20Smith"

示例 2:

输入:"               ", 5
输出:"%20%20%20%20%20"

提示:

  • 字符串长度在 [0, 500000] 范围内。

 解法1:自己写的,但是超时了

#include <stdio.h>
#include <string.h>
char* replaceSpaces(char* S, int length) {int i = 0;for (i = 0; i < length; i++) {if (S[i] == ' ') {S[i] = '%';          int j=0;for(j=length-1;j>i;j--){S[j+2]=S[j];}	S[i+1] = '2';S[i+2] = '0';i += 2;  // 跳过已替换的字符length += 2;S[length]='\0';}}return S;
}int main() {char str[50000];fgets(str, sizeof(str), stdin);str[strlen(str) - 1] = '\0';printf("%s\n", replaceSpaces(str, strlen(str)));return 0;
}

解法2:未超时

#include <stdio.h>
#include <string.h>char* replaceSpaces(char* S, int length) {int spaceCount = 0;int i=0;for (i = 0; i < length; i++) {if (S[i] == ' ') {spaceCount++;}}int newLength = length + 2 * spaceCount;int newIndex = newLength - 1;for (i = length - 1; i >= 0; i--) {if (S[i] == ' ') {S[newIndex] = '0';S[newIndex - 1] = '2';S[newIndex - 2] = '%';newIndex -= 3;} else {S[newIndex] = S[i];newIndex--;}}S[newLength]='\0';return S;
}int main() {char str[50000];fgets(str, sizeof(str), stdin);str[strlen(str) - 1] = '\0';printf("%s\n", replaceSpaces(str, strlen(str)));return 0;
}

例题3

判断国际象棋棋盘中一个格子的颜色

给你一个坐标 coordinates ,它是一个字符串,表示国际象棋棋盘中一个格子的坐标。下图是国际象棋棋盘示意图。

如果所给格子的颜色是白色,请你返回 true,如果是黑色,请返回 false 。

给定坐标一定代表国际象棋棋盘上一个存在的格子。坐标第一个字符是字母,第二个字符是数字。

示例 1:

输入:coordinates = "a1"
输出:false
解释:如上图棋盘所示,"a1" 坐标的格子是黑色的,所以返回 false 。

示例 2:

输入:coordinates = "h3"
输出:true
解释:如上图棋盘所示,"h3" 坐标的格子是白色的,所以返回 true 。

示例 3:

输入:coordinates = "c7"
输出:false

提示:

  • coordinates.length == 2
  • 'a' <= coordinates[0] <= 'h'
  • '1' <= coordinates[1] <= '8'
#include <stdio.h>
#include <string.h>
#include <stdbool.h>  bool squareIsWhite(char* coordinates) {if (coordinates[0] == 'a' || coordinates[0] == 'c' || coordinates[0] == 'e' || coordinates[0] == 'g') {int num = coordinates[1] - '0';if (num % 2 == 0) {return true;} else {return false;}} else if (coordinates[0] == 'b' || coordinates[0] == 'd' || coordinates[0] == 'f' || coordinates[0] == 'h') {int num = coordinates[1] - '0';if (num % 2 == 0) {return false;} else {return true;}} else {return false;}
}int main() {char str[3];scanf("%2s", str);str[2] = '\0';if (squareIsWhite(str)) {printf("true\n");} else {printf("false\n");}return 0;
}

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

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

相关文章

网络协议与攻击模拟_05TCP协议

一、传输层知识回顾 &#xff11;、传输层的功能 定义应用层协议数据报文的端口号&#xff0c;流量控制对原始数据进行分段处理 &#xff12;、传输层提供的服务 传输连接服务数据传输服务、流量控制、差错控制、序列控制 &#xff13;、传输层的协议 面向连接的传输协议…

Qt6入门教程 5:添加资源和应用程序图标

目录 一.Qt资源系统&#xff08;Qt Resource System&#xff09; 1.Resource Collection Files&#xff08;.qrc&#xff09; 2.External Binary Resources 3.Compiled-In Resources 4.Resource Compiler (rcc) 5.在程序中使用资源 二.添加.qrc文件 1.添加.qrc 2.编辑…

AI剪辑助手:轻松剪辑专注创意,视频批量AI智剪的方法

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;在许多领域都展现出了强大的能力。在视频剪辑领域&#xff0c;AI剪辑助手的出现&#xff0c;给内容创作者带来了前所未有的便利。它不仅能快速、高效地完成视频剪辑工作&#xff0c;还能释放创造力。今天一起…

【HarmonyOS】网络数据请求连接与数据持久化操作

从今天开始&#xff0c;博主将开设一门新的专栏用来讲解市面上比较热门的技术 “鸿蒙开发”&#xff0c;对于刚接触这项技术的小伙伴在学习鸿蒙开发之前&#xff0c;有必要先了解一下鸿蒙&#xff0c;从你的角度来讲&#xff0c;你认为什么是鸿蒙呢&#xff1f;它出现的意义又是…

【SpringBoot实战专题】「开发实战系列」深入迁出探索剖析SpringBoot服务容器特性的利器之Actuator(Web端点)

深入迁出探索剖析SpringBoot服务容器特性的利器之Actuator 内容简介内容大纲Actuator Web端点洞察应用程序内部状况的关键Actuator提供了13个端点启用ActuatorMaven依赖Gradle依赖 Actuator透视组件装配过程获得Bean装配报告&#xff08;/beans&#xff09;Bean属性概览Bean报告…

目标跟踪算法的目标丢失与遮挡处理 - 注意力机制

目标跟踪算法在处理目标遮挡和丢失情况时&#xff0c;采用了多种技术和策略。这些技术主要集中在提高算法的鲁棒性和适应性上&#xff0c;使其能够在复杂环境中有效跟踪目标。以下是一些常见的处理方法&#xff1a; 多模型融合&#xff1a;通过结合多个跟踪模型或特征表示&…

centos docker-compose安装教程-2024最新版 亲测可用

目录 长时间不安装,生疏了,再次记录下 1.下载 2.修改名称 3.提权 4.测试验证 长时间不安装,生疏了,再次记录下 1.下载 官网地址 docker-compose官网地址&#xff1a;https://docs.docker.com/compose/compose-file/compose-file-v3/ #进入目录 cd /usr/local/bin#下载 wg…

NI PXIe-6386国产替代,8路AI(16位,14 MS/s/ch),2路A​O,24路DIO,PXI多功能I/O模块

PXIe-6386 PXIe&#xff0c;8路AI&#xff08;16位&#xff0c;14 MS/s/ch&#xff09;&#xff0c;2路A​O&#xff0c;24路DIO&#xff0c;PXI多功能I/O模块 PXIe-6386是一款同步采样的多功能DAQ设备。该模块提供了模拟 I/O、数字I/O、四个32位计数器和模拟和数字触发。板载N…

Qat++,轻量级开源C++ Web框架

目录 一.简介 二.编译Oat 1.环境 2.编译/安装 三.试用 1.创建一个 CMake 项目 2.自定义客户端请求响应 3.将请求Router到服务器 4.用浏览器验证 一.简介 Oat是一个面向C的现代Web框架 官网地址&#xff1a;https://oatpp.io github地址&#xff1a;https://github.co…

15个为你的品牌增加曝光的维基百科推广方法-华媒舍

维基百科是全球最大的免费在线百科全书&#xff0c;拥有庞大的用户群体和高质量的内容。在如今竞争激烈的市场中&#xff0c;利用维基百科推广品牌和增加曝光度已成为许多企业的重要策略。本文将介绍15种方法&#xff0c;帮助你有效地利用维基百科推广品牌&#xff0c;提升曝光…

八. 实战:CUDA-BEVFusion部署分析-学习spconv的优化方案(Explicit GEMM conv)

目录 前言0. 简述1. 什么是Explicit GEMM Conv2. im2col3. spconv是如何使用Explicit GEMM Conv的4. 使用Explicit GEMM Conv处理spconv的优缺点5. 拓展-conv加速5.1 Introduction5.2 im2col5.3 Forward graph5.4 Backward graph5.5 Python example for forward propagation5.6…

【Proteus仿真】【Arduino单片机】智能感应温控风扇

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用LCD1602液晶显示模块、DS18B20温度、按键、声光报警、L293D电机驱动等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD1602显示传感器检…

高级JavaScript。同步和异步,阻塞和非阻塞

同步阻塞 同步非阻塞 异步阻塞 异步非阻塞 在当什么是同步和异步&#xff0c;阻塞与非阻塞的概念还没弄清楚之前&#xff0c;更别提上面这些组合术语了&#xff0c;只会让你更加困惑。 同步和异步 同步和异步其实指的是&#xff0c;请求发起方对消息结果的获取是主动发起…

uniCloud - 云函数 的基本使用

目录 基本概念 简介 快速上手 1.新建云函数 2.使用云函数 callFunction方法 云函数的入参 获取云函数调用来源 云函数的返回格式 uniCloud响应体规范 总结案例 新建云函数 使用云函数 展示 基本概念 云函数即在云端&#xff08;服务器端&#xff09;运行的函数。…

SpringFramework实战指南(二)

SpringFramework实战指南&#xff08;二&#xff09; 2.1 Spring 和 SpringFramework概念2.2 SpringFramework主要功能模块2.3 SpringFramework 主要优势 2.1 Spring 和 SpringFramework概念 Spring-ioc 广义的 Spring&#xff1a;Spring 技术栈&#xff08;全家桶&#xff0…

odoo17基础培训1-odoo开发基础知识准备以及odoo17开发环境安装

odoo17基础培训 一、odoo开发基础知识准备以及odoo17开发环境安装 1、odoo是什么&#xff1f; 当我介绍客户使用odoo系统作为业务管理平台时&#xff0c;有时会被问到Odoo是什么&#xff1f; 简单点&#xff0c;可以这么说&#xff1a; Odoo是一套完整的系统&#xff0c;是…

ssm基于web的电影购票系统+vue论文

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统电影购票信息管理难度大&#xff0c;容错率低&#xff0c…

Python基础知识:整理14 利用pyecharts生成地图

1 地图可视化的基本使用 from pyecharts.charts import Map from pyecharts.options import VisualMapOpts # 准备地图对象 map Map()# 准备数据 data [("北京市", 8), ("上海市", 99), ("广州省", 199), ("重庆市", 400), ("…

DSL查询文档--各种查询

DSL查询文档 elasticsearch的查询依然是基于JSON风格的DSL来实现的。 1查询所有 结果&#xff1a; 2全文检索&#xff08;full text&#xff09;查询 常见的全文检索查询包括&#xff1a; match查询&#xff1a;单字段查询 multi_match查询&#xff1a;多字段查询&#xff…

.NET开源免费、企业级、可商用内容管理系统 - SSCMS

前言 今天给大家推荐一款基于.NET Core开源、企业级、可商用、能够以最低的成本、最少的人力投入在最短的时间内架设一个功能齐全、性能优异、规模庞大并易于维护的内容管理系统&#xff1a;SSCMS。 系统官方介绍 SSCMS 内容管理系统基于微软 .NET Core 平台开发&#xff0c…