LeetCode 344: 反转字符串

LeetCode 344: 反转字符串 - C语言题解

这道题的目标是反转一个字符数组(字符串)。我们将通过双指针法来实现这一功能。

代码实现

#include <stdio.h>void reverseString(char* s, int sSize) {int left = 0, right = sSize - 1;  // 定义左右指针while (left < right) {  // 当左指针小于右指针时char temp = s[right];  // 临时保存右指针处的字符s[right--] = s[left];  // 将左指针处的字符放到右指针位置,并右指针向左移动s[left++] = temp;  // 将临时保存的字符放到左指针位置,并左指针向右移动}
}int main() {char s[] = "hello";  // 测试字符串int sSize = 5;  // 字符串的长度reverseString(s, sSize);  // 调用反转函数printf("Reversed string: %s\n", s);  // 输出反转后的字符串return 0;
}

代码解析

  1. 函数声明

    void reverseString(char* s, int sSize)
    

    这个函数接受两个参数:

    • s:字符数组(字符串)。
    • sSize:字符数组的长度。
  2. 初始化左右指针

    int left = 0, right = sSize - 1;
    

    我们使用两个指针leftright来标记字符串的左右端,初始时left指向字符串的第一个字符,right指向字符串的最后一个字符。

  3. 循环反转字符

    while (left < right)
    

    这个while循环会继续进行,直到left大于或等于right为止,即两指针交汇时停止。每次循环中,我们会交换leftright位置的字符。

  4. 交换字符

    char temp = s[right];  // 临时保存右指针处的字符
    s[right--] = s[left];   // 将左指针处的字符放到右指针位置,并右指针向左移动
    s[left++] = temp;       // 将临时保存的字符放到左指针位置,并左指针向右移动
    
    • 我们首先将right位置的字符保存在一个临时变量temp中。
    • 然后将left位置的字符赋给right位置,同时右指针向左移动(right--)。
    • 最后将temp中的字符赋给left位置,同时左指针向右移动(left++)。
  5. 主函数

    int main() {char s[] = "hello";int sSize = 5;reverseString(s, sSize);printf("Reversed string: %s\n", s);return 0;
    }
    

    main函数中,我们定义了一个字符数组s,并指定其长度sSize为5。然后调用reverseString函数反转字符串,最后输出反转后的结果。

复杂度分析

  • 时间复杂度 O ( n ) O(n) O(n),其中 n n n是字符串的长度。我们只需要一次遍历来交换字符。
  • 空间复杂度 O ( 1 ) O(1) O(1),我们只使用了常数空间来保存临时字符。

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

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

相关文章

网站快速收录:如何设置robots.txt文件?

本文转自&#xff1a;百万收录网 原文链接&#xff1a;https://www.baiwanshoulu.com/34.html 为了网站快速收录而合理设置robots.txt文件&#xff0c;需要遵循一定的规则和最佳实践。robots.txt文件是一个纯文本文件&#xff0c;它告诉搜索引擎爬虫哪些页面可以访问&#xff…

PaddleOCR 截图自动文字识别

春节假期在家无聊&#xff0c;撸了三个小工具&#xff1a;PC截图编辑/PC录屏(用于meeting录屏)/PC截屏文字识别。因为感觉这三个小工具是工作中常常需要用到的&#xff0c;github上也有很多开源的&#xff0c;不过总有点或多或少的小问题&#xff0c;不利于自己的使用。脚本的编…

【Java异步编程】基于任务类型创建不同的线程池

文章目录 一. 按照任务类型对线程池进行分类1. IO密集型任务的线程数2. CPU密集型任务的线程数3. 混合型任务的线程数 二. 线程数越多越好吗三. Redis 单线程的高效性 使用线程池的好处主要有以下三点&#xff1a; 降低资源消耗&#xff1a;线程是稀缺资源&#xff0c;如果无限…

14-9-2C++STL的set容器

&#xff08;一&#xff09;函数对象的基本概念 set容器的元素排序 1.set<int,less<int> >setlntA;//该容器是按升序方式排列元素&#xff0c;set<int>相当于set<int,less<int>> 2.set<int,greater<int> >setlntB;//该容器是按降序…

音视频入门基础:RTP专题(8)——使用Wireshark分析RTP

一、引言 通过Wireshark可以抓取RTP数据包&#xff0c;该软件可以从Wireshark Go Deep 下载。 二、通过Wireshark抓取RTP数据包 首先通过FFmpeg将一个媒体文件转推RTP&#xff0c;生成RTP流&#xff1a; ffmpeg -re -stream_loop -1 -i input.mp4 -vcodec copy -an -f rtp …

tf.Keras (tf-1.15)使用记录3-model.compile方法

model.compile 是 TensorFlow Keras 中用于配置训练模型的方法。在开始训练之前&#xff0c;需要通过这个方法来指定模型的优化器、损失函数和评估指标等。 注意事项: 在开始训练&#xff08;调用 model.fit&#xff09;之前&#xff0c;必须先调用 model.compile()。 1 基本…

解决whisper 本地运行时GPU 利用率不高的问题

我在windows 环境下本地运行whisper 模型&#xff0c;使用的是nivdia RTX4070 显卡&#xff0c;结果发现GPU 的利用率只有2% 。使用 import torch print(torch.cuda.is_available()) 返回TRUE。表示我的cuda 是可用的。 最后在github 的下列网页上找到了问题 极低的 GPU 利…

大模型综合性能考题汇总

- K1.5长思考版本 一、创意写作能力 题目1&#xff1a;老爸笑话 要求&#xff1a;写五个原创的老爸笑话。 考察点&#xff1a;考察模型的幽默感和创意能力&#xff0c;以及对“原创”要求的理解和执行能力。 题目2&#xff1a;创意故事 要求&#xff1a;写一篇关于亚伯拉罕…

在 crag 中用 LangGraph 进行评分知识精炼-下

在上一次给大家展示了基本的 Rag 检索过程&#xff0c;着重描述了增强检索中的知识精炼和补充检索&#xff0c;这些都是 crag 的一部分&#xff0c;这篇内容结合 langgraph 给大家展示通过检索增强生成&#xff08;Retrieval-Augmented Generation, RAG&#xff09;的工作流&am…

(二)QT——按钮小程序

目录 前言 按钮小程序 1、步骤 2、代码示例 3、多个按钮 ①信号与槽的一对一 ②多对一&#xff08;多个信号连接到同一个槽&#xff09; ③一对多&#xff08;一个信号连接到多个槽&#xff09; 结论 前言 按钮小程序 Qt 按钮程序通常包含 三个核心文件&#xff1a; m…

win11本地部署 DeepSeek-R1 大模型!免费开源,媲美OpenAI-o1能力,断网也能用

一、下载ollama 二、安装ollama 三、部署DeepSeek-R1 在cmd窗口中先输入ollama -v查看ollama是否安装成功&#xff0c;然后直接运行部署deepseek-r1的命令 ollama run deepseek-r1&#xff0c;出现下面界面即为安装成功。 C:\Users\admin>ollama -v ollama version is 0.5…

蓝桥杯例题六

奋斗是一种态度&#xff0c;也是一种生活方式。无论我们面对什么样的困难和挑战&#xff0c;只要心怀梦想&#xff0c;坚持不懈地努力&#xff0c;就一定能够迈向成功的道路。每一次失败都是一次宝贵的经验&#xff0c;每一次挫折都是一次锻炼的机会。在困难面前&#xff0c;我…

【工欲善其事】利用 DeepSeek 实现复杂 Git 操作:从原项目剥离出子版本树并同步到新的代码库中

文章目录 利用 DeepSeek 实现复杂 Git 操作1 背景介绍2 需求描述3 思路分析4 实现过程4.1 第一次需求确认4.2 第二次需求确认4.3 第三次需求确认4.4 V3 模型&#xff1a;中间结果的处理4.5 方案验证&#xff0c;首战告捷 5 总结复盘 利用 DeepSeek 实现复杂 Git 操作 1 背景介绍…

B+ 树的实现原理与应用场景

B 树是如何实现的全面分析 在进行数据库和文件系统的设计中&#xff0c;B 树是一种常用的数据结构。它不仅是 B 树的延伸&#xff0c;而且团结了性能优化和实现上的优势。本文将从学术理论和实现程序的角度&#xff0c;分析 B 树是如何实现的&#xff0c;以及它依赖于哪些具体…

TensorFlow 示例摄氏度到华氏度的转换(一)

TensorFlow 实现神经网络模型来进行摄氏度到华氏度的转换&#xff0c;可以将其作为一个回归问题来处理。我们可以通过神经网络来拟合这个简单的转换公式。 1. 数据准备与预处理 2. 构建模型 3. 编译模型 4. 训练模型 5. 评估模型 6. 模型应用与预测 7. 保存与加载模型 …

gitea - fatal: Authentication failed

文章目录 gitea - fatal: Authentication failed概述run_gitea_on_my_pkm.bat 笔记删除windows凭证管理器中对应的url认证凭证启动gitea服务端的命令行正常用 TortoiseGit 提交代码备注END gitea - fatal: Authentication failed 概述 本地的git归档服务端使用gitea. 原来的用…

【深度解析】DeepSeek-R1的五大隐藏提示词

LangChain系列文章目录 01-玩转LangChain&#xff1a;从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块&#xff1a;四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain&#xff1a;从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…

基于RAG的知识库问答系统

基于RAG的知识库问答系统 结合语义检索与大语言模型技术&#xff0c;实现基于私有知识库的智能问答解决方案。采用两阶段处理架构&#xff0c;可快速定位相关文档并生成精准回答。 核心功能 知识向量化引擎 支持多语言文本嵌入&#xff08;all-MiniLM-L6-v2模型&#xff09;自…

Windsurf cursor vscode+cline 与Python快速开发指南

Windsurf简介 Windsurf是由Codeium推出的全球首个基于AI Flow范式的智能IDE&#xff0c;它通过强大的AI助手功能&#xff0c;显著提升开发效率。Windsurf集成了先进的代码补全、智能重构、代码生成等功能&#xff0c;特别适合Python开发者使用。 Python环境配置 1. Conda安装…

MySql运维篇---008:日志:错误日志、二进制日志、查询日志、慢查询日志,主从复制:概述 虚拟机更改ip注意事项

#先登录mysql mysql -uroot -p1234#通过此系统变量&#xff0c;查看当前mysql的版本中默认的日志格式是哪个 show variables like %binlog\_format%;1.2.3 查看 由于日志是以二进制方式存储的&#xff0c;不能直接读取&#xff0c;需要通过二进制日志查询工具 mysqlbinlog 来查…