当前位置: 首页 > news >正文

LeetCode541 反转字符串2

一、题目描述

给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。具体规则如下:

  1. 如果剩余字符少于 k 个,则将剩余字符全部反转。
  2. 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。

示例:

  • 输入: s = "abcdefg", k = 2
  • 输出: "bacdfeg"

二、解题思路

我们可以采用分组处理的方式来解决这个问题。具体步骤如下:

  1. 以 2k 个字符为一组对字符串进行遍历。
  2. 对于每一组,反转前 k 个字符。
  3. 处理剩余字符,根据剩余字符的数量进行不同的处理:
    • 如果剩余字符少于 k 个,则将剩余字符全部反转。
    • 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。

三、代码实现

以下是使用 C 语言实现的代码:

#include <string.h>

// 反转字符串中从 start 到 end 的字符
void reverse(char* s, int start, int end) {
    while (start < end) {
        char temp = s[start];
        s[start] = s[end];
        s[end] = temp;
        start++;
        end--;
    }
}

char* reverseStr(char* s, int k) {
    int len = strlen(s);
    // 以 2k 为步长遍历字符串
    for (int i = 0; i < len; i += 2 * k) {
        // 反转前 k 个字符
        if (i + k <= len) {
            reverse(s, i, i + k - 1);
        } else {
            // 剩余字符少于 k 个,全部反转
            reverse(s, i, len - 1);
        }
    }
    return s;
}

代码解释

  1. reverse 函数:该函数用于反转字符串中从 start 到 end 的字符。通过交换首尾字符,逐步向中间靠拢,直到 start 大于等于 end
  2. reverseStr 函数
    • 首先,使用 strlen 函数获取字符串的长度。
    • 然后,以 2k 为步长遍历字符串。
    • 对于每一组,判断剩余字符的数量:
      • 如果剩余字符不少于 k 个,则反转前 k 个字符。
      • 如果剩余字符少于 k 个,则将剩余字符全部反转。

四、复杂度分析

  • 时间复杂度:O(n),其中n是字符串的长度。因为我们只需要遍历一次字符串,每个字符最多被访问和交换一次。
  • 空间复杂度:O(1),只使用了常数级的额外空间。

五、总结

通过分组处理和反转操作,我们可以高效地解决这个字符串反转问题。这种方法的时间复杂度较低,并且只需要常数级的额外空间。在实际应用中,我们可以根据具体需求对代码进行优化和扩展。

相关文章:

  • CAS单点登录(第7版)19.监控和统计
  • MongoDB索引介绍
  • 位图(C语言版)
  • 自己部署DeepSeek 助力 Vue 开发:打造丝滑的标签页(Tabs)
  • pdf文件的读取,基于深度学习的方法
  • 大模型WebUI:Gradio全解12——使用Agents和Tools智能代理工具构建UI(1)
  • vue3.x 的shallowReactive 与 shallowRef 详细解读
  • 深度学习之神经网络框架搭建及模型优化
  • 【C++终极篇】C++11:编程新纪元的神秘力量揭秘
  • 数据结构 04
  • 100.16 AI量化面试题:监督学习技术在量化金融中的应用方案
  • C#/.NET/.NET Core技术前沿周刊 | 第 24 期(2025年1.27-1.31)
  • SpringMVC父子容器:Web应用架构的隐形守护者
  • 回归新系列——网络安全实操干货系列——Kali Linux新版本——Kali Purple实操指南——信息收集篇1——Nmap(其一)
  • pptx文档提取信息
  • 20vue3实战-----使用echarts搭建各种图表
  • Java 大视界 -- 全球数据治理格局下 Java 大数据的发展路径(89)
  • spring和mybatis的整合
  • Python的那些事第二十二篇:基于 Python 的 Django 框架在 Web 开发中的应用研究
  • sort快排
  • 国家统计局:中美大幅降低关税有利于双方贸易增长,也有利于世界经济复苏
  • 河南一县政府党组成员签订抵制违规吃喝问题承诺书,现场交给县长
  • 病愈出院、跳大神消灾也办酒,新华每日电讯:农村滥办酒席何时休
  • 流失79载,国宝文物“子弹库帛书”(二、三卷)回归祖国
  • 通往国际舞台之路:清政府与万国公会的交往
  • 讲座|消逝之钟:《红楼梦》与《布登勃洛克一家》中的时间观