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

反转字符串 II--力扣541

反转字符串 II

  • 题目
  • 思路
  • 代码

题目

在这里插入图片描述

思路

本题的关键在于理解每隔 2k 个字符的前 k 个字符进行反转,剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符。并且剩余字符少于 k 个,则将剩余字符全部反转。

让i每次跳2k,成为每一次循环的起点,再进行判断,如果i + k <= s.size(),说明剩余字符小于 2k 但大于或等于 k 个,所以反转前 k 个字符。否则说明剩余字符少于 k 个,则将剩余字符全部反转。

代码

class Solution {
public:
    void reverse(string& s, int x, int y) {
        for (int i = x, j = y; i < j; i++, j--) {
            swap(s[i], s[j]);
        }
    }
    string reverseStr(string s, int k) {
        for (int i = 0; i < s.size(); i += (2 * k)) {
            //如果剩余字符串数<=2k且>=k,那么翻转前k个
            if (i + k <= s.size()) {
                reverse(s, i, i + k -1);
                continue;
            } else {
                //如果剩余字符串数<k,翻转剩余的全部字符
                reverse(s, i, s.size() - 1);
            }
        }
        return s;
    }
};

http://www.kler.cn/a/317523.html

相关文章:

  • 【PowerHarmony】电鸿蒙学习记录-编写helloworld!
  • mysql 配置文件 my.cnf 增加 lower_case_table_names = 1 服务启动不了的原因
  • 深入解析贪心算法及其应用实例
  • 【常见问题解答】远程桌面无法复制粘贴的解决方法
  • Python高级编程模式和设计模式
  • 软件测试面试大全(含答案+文档)
  • k8s介绍-搭建k8s
  • Redis数据结构之哈希表
  • 【QT】QSS基础
  • Qt-qmake语言
  • 【网络基础知识】详解TCP/IP协议栈
  • golang调用163邮箱发送邮件
  • Spring Data Rest 远程命令执⾏命令(CVE-2017-8046) 靶场攻略
  • phpword读取word docx文档文本及图片转html格式
  • ElasticSearch分页查询性能及封装实现
  • 为什么推荐使用英文版LabVIEW
  • linux-网络管理-网络配置
  • 直播美颜工具的开发详解:基于视频美颜SDK的解决方案
  • java项目之基于springboot的医院资源管理系统源码
  • 【Linux 从基础到进阶】 Xen 虚拟化技术应用
  • 【实践功能7】前端实现截屏
  • Leetcode算法基础篇-递归算法
  • Spring事务类型及传播行为实战指南
  • JEDEC DDR4 SRAM standard
  • go 读取excel数据存储到mysql
  • 案例研究丨国控星鲨利用DataEase释放数据潜能,重塑业务视野