每日一题——反转字符串—II

news2024/10/7 17:28:23

每日一题

反转字符串——II

题目链接

在这里插入图片描述

思路

  • 我们先来举几个例子来理解题目意思

    • 字符串“ abcdefgh ”,k = 2,那么依据题目意思,反转后的字符串应该是“ bacdfegh ”(即每2k个字符,就反转前k个字符,且无剩余字符)
    • 字符串“ abcdefg ”,k = 2,那么依据题目意思,反转后的字符串应该是“ bacdfeg ”(即当有剩余字符,且大于等于k个小于2k个时,反转前k个字符)
    • 字符串“ abcdefgh ”,k = 3,那么依据题目意思,反转后的字符串应该是“ cbadefhg ”(即当有剩余字符,且小于k个时,将剩余字符全部反转)
  • 看完上面的例子,就差不多能明白题目要我们做什么了,做了反转字符串——I,想必大家对字符串的反转已经熟悉了,那么这一题我们思考的主要是如何确定字符串反转的区间,也就是说如何做到每隔2k个字符就反转前k个字符,难道要用计数器来统计2k和它的前k个字符吗?这样做当然可以做出来,但显然效率不高。

  • 其实,我们可以在遍历字符串的循环上稍作修改:

    • 一般的我们遍历字符串是这样写的
    for(int i = 0; i < strlen(s); i++)	//s是字符串首地址
    {
        `````````;
    }
    
    • 但这一题我们可以进行这样的改进·
    for(int i = 0; i < strlen(s); i += 2 * k)
    {
    	`````````;
    }
    
    • 这样我们就可以很方便的确定反转区间了。

实现代码

//对字符串s的i到k区间的字符进行反转
void S_reverseStr(char * s, int i, int k)
{
    int left = i, right = k - 1;
    while(left <= right)
    {
        char temp = s[left];
        s[left] = s[right];
        s[right] = temp;
        left++;
        right--;
    }
    return;
}
char * reverseStr(char * s, int k){
    for(int i = 0; i < strlen(s); i+=2 * k)
    {
        //如果剩余的字符大于等于k,则反转前k个字符(包含了每2k个字符反转前k个字符的情况)
        if(i + k <= strlen(s))
            S_reverseStr(s,i,i+k);
        //如果剩余的字符小于k,则全部反转
        else
            S_reverseStr(s,i,strlen(s));
    }
    return s;
}

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

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

相关文章

基于 Python+Flask+SQLite 的网易云音乐评论情感分析系统

基于 PythonFlaskMySQL 的网易云音乐评论情感分析系统&#xff0c;采用Echart构建图表&#xff0c;支持一键切换颜色主题&#xff0c;通过连接数据库获取评论数据。对失效的爬虫代码进行了更新&#xff0c;可通过歌曲id_半_自动获取评论&#xff0c;具体可以看下方的过程展示。…

展望Flink各版本及新特性

展望Flink各版本及新特性 一 Flink 1.9 版本1.1 细粒度批作业恢复1.2 State Processor API1.3 Stop-with-Savepoint1.4 新 Blink SQL 查询处理器预览1.5 Table API / SQL 的其他改进 二 Flink 1.10 [重要版本 : Blink 整合完成]2.1 内存管理及配置优化2.2 统一的作业提交逻辑2.…

图像去噪简单介绍—并给出示例代码

文章目录 图像去噪简单介绍—并给出示例代码去噪的基本原理常见的噪声类型高斯噪声椒盐噪声马赛克噪声脉冲噪声 添加噪声的代码添加高斯噪声添加椒盐噪声 noise_pic常用的去噪方法均值滤波中值滤波高斯滤波双边滤波基于深度学习的图像去噪 总结图片来源 图像去噪简单介绍—并给…

Win11如何下载安装java?

一、问题描述 我在复现论文代码的时候&#xff0c;遇到了这样的问题&#xff1a; 我没有下载java&#xff0c;那么该如何解决呢&#xff1f; 下载 Java 的作用是为了能够在计算机上运行使用 Java 语言编写的应用程序。Java 是一种广泛使用的编程语言&#xff0c;可用于开发各…

【leetcode刷题总结】——代码随想录(数组总结)

代码随想录按照数组-> 链表-> 哈希表->字符串->栈与队列->树->回溯->贪心->动态规划->图论->高级数据结构&#xff0c;再从简单刷起&#xff0c;做了几个类型题目之后&#xff0c;再慢慢做中等题目、困难题目。 以下是个人刷题总结&#xff0c;…

多线程编程的安全问题和解决措施

线程不安全的概念 由于多线程并发执行&#xff0c;导致结果出错&#xff0c;我们称这种线程是不安全的。 多线程编程出错的原因 一&#xff1a;线程之间并发执行的随机性导致线程不安全 二&#xff1a;多个线程对同一个对象进行修改 三&#xff1a;线程的操作不是原子性的…

Vscode搭建ESP-IDF开发环境指南-Ubuntu ESP32-C3 合宙

文章目录 1.Ubuntu环境搭建2.vscode安装3.esp-idf插件如果到这里没出现问题的话&#xff0c;就能顺利安装了&#xff0c;如果出现问题会在输出那一栏里报错&#xff0c;根据错误去找原因就好&#xff0c;常见的错误就是网络原因以及之前的依赖包没有装好 ![](https://img-blog.…

优思学院|受控文件在质量管理体系中的作用?

在质量管理体系中&#xff0c;受控文件是指受到控制和管理的文件&#xff0c;包括政策、程序、指南、规程、说明书、作业指导书、记录等&#xff0c;它们记录了组织内各种活动的要求和实施方法&#xff0c;并规定了文件的创建、审批、发布、变更和废止等流程&#xff0c;以确保…

宝塔怎么安装青龙面板-跑京东豆脚本

一、搭建青龙面板 安装docker管理器 我们使用宝塔的Docker管理器来一键安装Docker 在软件商店内搜索Docker,直接安装第一个应用即可。 拉取镜像运行容器 在安装完docker之后我们就可以开始拉取docker镜像并运行容器了,ssh连接服务器命令行中输入下面的代码: docker run …

TOGAF架构内容—TOGAF 内容框架和企业元模型

一、概述 TOGAF ADM 提供了一个流程生命周期&#xff0c;用于在企业内创建和管理架构。在 ADM&#xff0c;对输入、输出和步骤的讨论&#xff0c;描述了许多架构工作产品或工件&#xff0c;例如过程和 应用。 此处提供的内容框架和企业元模型为这些术语定义了正式结构&#x…

【python】NameError: No such file or directory 问题解决

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 1. 问题 最近有小伙伴经常问到这个报错&#xff0c;今天来分享一下具体怎么解决。 [Errno 2] No such file or directory: ./mnist_image_label/mnist_train_jpg_60000.txt这个没有查找到子文件或者子文件夹的问题 2. 解决…

WIZnet 的 TOE 设计大赛

链接: TOE Design Contest 介绍 欢迎来到 WIZnet 的年度物联网设计大赛&#xff01; TOE 竞赛是对您的 IoT 技能和创造力的终极考验。 借助强大的 W5300 网络控制器芯片&#xff0c;您将能够以前所未有的方式将您的物联网愿景变为现实。 无论您是经验丰富的专业人士还是刚刚起…

计算机提示vcruntime140.dll丢失是什么意思?vcruntime140.dll丢失的解决方法(详细方法)

计算机丢失vcruntime140.dll是什么意思&#xff1f;经常看到有小伙伴有在网上问这样的问题&#xff0c;电脑上这个vcruntime140.dll文件丢失的问题经常发生吧&#xff0c;那么就很有必要给大家详细的说说这一方面的问题了&#xff0c;下面我们来看看 第一&#xff1a;vcruntim…

RocketMQ的简单使用

大家好&#xff0c;我是Leo&#xff01;今天来和大家分享RocketMQ的一些用法。 领域模型介绍 Producer: 用于生产消息的运行实体。 Topic: 主题&#xff0c;用于消息传输和存储的分组容器。 MessageQueue: 消息传输和存储的实际单元容器。 Message: 消息传输的最小单元。 C…

如何让你的 WebSocket 接口测试更高效?拯救你的接口测试工作

目录 引言 WebSocket介绍 HTTP与WebSocket的区别 WebSocket测试方法 使用在线工具 使用Postman 使用Jmeter 使用Python 结语 引言 你是否曾经为 WebSocket 接口测试中复杂的协议和难以捕获的数据而感到束手无策&#xff1f;WebSocket 协议与传统的 HTTP 协议不同&…

【牛客网】美国节日与因式分解

目录 一、编程题 1.美国节日 2.因式分解 一、编程题 1.美国节日 链接&#xff1a;美国节日__牛客网 (nowcoder.com) 和中国的节日不同&#xff0c;美国的节假日通常是选择某个月的第几个星期几这种形式&#xff0c;因此每一年的放假日期都不相同。具体规则如下&#xff1a…

volatile与synchronized

文章目录 前言一、简介volatilesynchronized 二、名词解释可见性原子性指令重排临界区对象锁类锁 二、实战使用1 Volatile可以解决的问题2 volatile无法解决非原子性操作问题--synchronized 总结 前言 volatile与synchronized 都是java的关键字 volatile一般修饰变量,被修饰的…

做了一年csgo搬砖项目,还清所有债务:会赚钱的人都在做这件事 !

前段時间&#xff0c;在网上看到一句话&#xff1a;有什么事情&#xff0c;比窮更可怕&#xff1f; 有人回答说&#xff1a;“又忙又窮。” 很扎心&#xff0c;却是绝大多数人的真实写照。 每天拼死拼活的996&#xff0c;你有算过你的時间值多少钱&#xff1f; 我们来算一笔…

操作系统——死锁

0.关注博主有更多知识 操作系统入门知识合集 目录 5.1死锁概念 5.2死锁的起因 5.3预防死锁的策略 思考题&#xff1a; 5.1死锁概念 在介绍死锁之前&#xff0c;先来探究一个问题&#xff1a;哲学家就餐问题。五个哲学家围坐在圆桌边&#xff0c;有5支筷子&#xff0c;哲…

免费的绘图工具DrowIO下载及安装

还在为论文绘图而烦恼吗&#xff1f;还在为如何选择画图工具而烦恼吗&#xff1f;没事&#xff0c;本期就给你们推荐一款超级好用且免费的绘图工具——DrawIO。 目前使用比较多的绘图工具有&#xff1a;Visio、亿图图示、Word、PPT、DrawIO等 其中DrawIO由于其既实用又免费的…