LeetCode——541. 反转字符串 II(Java)
2021/8/20 9:05:51
本文主要是介绍LeetCode——541. 反转字符串 II(Java),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
题目描述
题干: 给定一个字符串 s 和一个整数 k,从字符串开头算起,每 2k 个字符反转前 k 个字符。 如果剩余字符少于 k 个,则将剩余字符全部反转。 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。 示例 1: 输入:s = "abcdefg", k = 2 输出:"bacdfeg" 示例 2: 输入:s = "abcd", k = 2 输出:"bacd"
题解思路
返回每k个字符反转之后的字符串,这里要注意是每k个反转一次,并且如果不够长则全部反转 首先反转必写的反转函数老生常谈了,双指针while一遍反转,这里难点是每次的左右指针 如果我们每k个反转一次,我们就必须每次增加2k个,只取k个反转,如果右指针大于length则给他字符串长度
正确代码
public String reverseStr(String s, int k) { int length = s.length(); char[] arr = s.toCharArray(); for (int i = 0; i < length; i += 2 * k) { reverse(arr, i, Math.min(length, i + k) - 1); } return new String(arr); } private void reverse(char[] arr, int left, int right) { while (left < right) { char temp = arr[left]; arr[left] = arr[right]; arr[right] = temp; left++; right--; } }
总结
作为反转plus版本我不知道有没有Ⅲ,不过只需要找到每次反转的范围和边界处理即可 如果文章存在问题或者有更好的题解,欢迎在评论区斧正和评论,各自努力,你我最高处见
这篇关于LeetCode——541. 反转字符串 II(Java)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求
- 2024-10-01使用 golang 将ETH账户的资产平均分散到其他账户
- 2024-10-01JWT用户校验课程:从入门到实践
- 2024-10-01Server Component课程入门指南
- 2024-09-30Dnd-Kit学习:新手快速入门指南