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

24-算法打卡-字符串-反转字符串II-leetcode(541)-第二十四天

1 题目地址

541. 反转字符串 II - 力扣(LeetCode)541. 反转字符串 II - 给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。 * 如果剩余字符少于 k 个,则将剩余字符全部反转。 * 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。 示例 1:输入:s = "abcdefg", k = 2输出:"bacdfeg"示例 2:输入:s = "abcd", k = 2输出:"bacd" 提示: * 1 <= s.length <= 104 * s 仅由小写英文组成 * 1 <= k <= 104https://leetcode.cn/problems/reverse-string-ii/description/


2 题目说明

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

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

示例 1:

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

示例 2:

输入:s = "abcd", k = 2
输出:"bacd"

提示:

  • 1 <= s.length <= 104
  • s 仅由小写英文组成
  • 1 <= k <= 104

3 解题思路


题目的意思其实概括为 每隔2k个反转前k个,尾数不够k个时候全部反转。
1、计算出待反转的次=数组长度/(2*k)  + (数组长度/(2*k) > 0 ? 1 : 0)
2、循环遍历的次数
3、计算每次需要反转的字符起始索引下标(start=i * k * 2)
        结束索引下标(end=left+k-1), 从start到end反转


4 代码编写


4.1 双指针反转

class Solution {public String reverseStr(String s, int k) {// 转化为字符数组char[] sArray = s.toCharArray();// 计算需要处理的次数int times = sArray.length / (2 * k);// 不能整除要多处理一次times += sArray.length % (2 * k) > 0 ? 1 : 0;for (int i=0; i<times; i++) {// 计算每次反转处理的起始位置int left = i * k * 2;// 计算每次反转处理的结束位置int right = Math.min(left + k - 1 , sArray.length-1);// 原地反转while (left < right) {char temp = sArray[left];sArray[left] = sArray[right];sArray[right] = temp;left++;right--;}}return String.valueOf(sArray);}
}

http://www.xdnf.cn/news/1180.html

相关文章:

  • java中值传递的含义
  • IDEA下载kotlin-compiler-embeddable特别慢
  • 从零开始配置 Zabbix 数据库监控:MySQL 实战指南
  • RFID手持机,助力固定资产高效管理
  • 工业以太网无线网桥:无线通信的工业级解决方案
  • macOS安全隐私最佳实践分析
  • vscode:Live Server Preview插件
  • HarmonyOS Next 编译之如何使用多目标产物不同包名应用
  • 深入解析C++ STL List:双向链表的特性与高级操作
  • 再话git merge和rebase
  • GIT合并/推送报错
  • Redis 处理读请求
  • 针头式过滤器推荐
  • 虚幻基础:动画k帧
  • csv数据的写入
  • nifty数据格式中qform 和sform
  • 电子电器架构 --- 面向下一代车辆的演进式(发展演变的)汽车网关
  • C++ std::forward 详解
  • WLAN 漫游技术全解析:类型、转发模式与应用场景
  • C++ 拷贝构造函数 浅拷贝 深拷贝
  • Spring开发系列教程(26)——异步处理
  • 中和农信从信贷支持到多元服务的创新实践
  • el-table中el-input的autofocus无法自动聚焦的解决方案
  • DasViewer软件打开、保存、关闭文件
  • 部署私有gitlab网站
  • 基于大语言模型的减肥健身计划系统设计与实现
  • 小雨滴的奇妙旅行
  • 【MQ篇】RabbitMQ初体验!
  • 残差(Residual)
  • (区间 dp)洛谷 P6879 JOI2020 Collecting Stamps 3 题解