【算法与数据结构】541、LeetCode反转字符串 II

news/2024/11/14 15:09:07/

文章目录

  • 一、题目
  • 二、解法
  • 三、完整代码

所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。

一、题目

在这里插入图片描述

二、解法

  思路分析:本题自己写了一个swap函数,用来反转字符串,也可以用库函数reverse。然后是用index遍历字符串,步长为2k,if判断剩余的字符数量。(这道题的解法写的不太好,太冗杂了,有待改进,大家仅做参考)
  程序如下

class Solution {
public:string swap(string s) {for (int i = 0, j = s.size() - 1; i < s.size() / 2; ++i, --j) {s[i] ^= s[j];	// ^位运算当中的异或算子s[j] ^= s[i];s[i] ^= s[j];}return s;}string reverseStr(string s, int k) {string str;for (int index = 0, leftover = s.size(); leftover > 0; index += 2 * k, leftover = s.size() - index) {if (leftover < k) {str.append(swap(s.substr(index, leftover)));break;	// 剩余字符小于k,全部反转,然后退出循环}else {str.append(swap(s.substr(index, k)));if (leftover >= 2 * k) str.append(s.substr(index + k, k));	// 剩余字符大于2k的情况else str.append(s.substr(index + k, leftover - k));			// 剩余字符大于k,小于2k的情况}}return str;}
};

复杂度分析:

  • 时间复杂度: O ( n ) O(n) O(n)
  • 空间复杂度: O ( 1 ) O(1) O(1)

三、完整代码

# include <iostream>
# include <string>
using namespace std;class Solution {
public:string swap(string s) {for (int i = 0, j = s.size() - 1; i < s.size() / 2; ++i, --j) {s[i] ^= s[j];	// ^位运算当中的异或算子s[j] ^= s[i];s[i] ^= s[j];}return s;}string reverseStr(string s, int k) {string str;for (int index = 0, leftover = s.size(); leftover > 0; index += 2 * k, leftover = s.size() - index) {if (leftover < k) {str.append(swap(s.substr(index, leftover)));break;	// 剩余字符小于k,全部反转,然后退出循环}else {str.append(swap(s.substr(index, k)));if (leftover >= 2 * k) str.append(s.substr(index + k, k));	// 剩余字符大于2k的情况else str.append(s.substr(index + k, leftover - k));			// 剩余字符大于k,小于2k的情况}}return str;}
};int main()
{int k = 2;string s = "abcdefg";Solution s1;cout << "目标字符串:\n" << s << endl;string str = s1.reverseStr(s, k);cout << "翻转后的字符数组:\n" << str << endl;system("pause");return 0;
}

end


http://www.ppmy.cn/news/630517.html

相关文章

书签收藏集

目录 GITHUB K8s 网站 工具 搜索引擎 文章 RPi 文档 待学 论文索引 平台 临时 Django API GPS MQTT Android 论文 疑难 毕 GITHUB guanguans/design-patterns-for-humans-cn: &#x1f389; Design patterns for humans 中文版 orico/www.mlcompendium.com:…

Webpack加载器(Loaders)的执行顺序

Webpack加载器&#xff08;Loaders&#xff09;的执行顺序 在Webpack中&#xff0c;加载器的执行顺序是从右往左、从下往上的。为什么会选择这样的执行顺序呢&#xff1f;本文将介绍Webpack加载器执行顺序的原因和解释&#xff0c;并通过一个CSS加载器的示例来说明。 灵活的配…

蝶变!三线城市高新产业与人口的深度观察(上篇)-原创

第一篇文章《北漂IT男返乡2年的三线楼市观察&#xff08;宜昌夷陵篇&#xff09;》出来之后引起了网友朋友尤其是宜昌本地网友的热情关注&#xff0c;圈中的一些好友也给予了我认可&#xff0c;我的好友宜昌买房哥以及合家网BOSS都给予了我文章的分发支持&#xff0c;在此诸葛磊…

一些有趣、奇葩、实用的网站

先扒一下国内的&#xff0c;感觉国内好玩的网站比较少&#xff0c;所以这次分享的国内网站还是实用的占多数。欢迎大家把自己知道的好玩的网站推荐上来。听听家乡的方言故事 http://phonemica.net&#xff08;国内&#xff09;在海外漂泊的朋友们看到这个网站会倍感亲切的&…

php基础

php面试题之三——PHP语言基础&#xff08;基础部分&#xff09; 三、PHP语言基础 1. strlen( )与 mb_strlen( )的作用分别是什么(新浪网技术部) strlen和mb_strlen都是用于获取字符串长度。 strlen只针对单字节编码字符&#xff0c;也就是说它计算的是字符串的总字节数。如果是…

算命的理科生——顺口说说算命的事......

我14岁那年&#xff0c;老爸在北京住院&#xff0c;我中考完后就来北京。当时不知谁在看《周易》我也跟着看。其实一句话都看不懂&#xff0c;但是觉得句子美丽&#xff0c;就一翻再翻。就象多年后读《金刚经》一样。 后来&#xff0c;上大学读计算机。还是有时候会翻翻《周易》…

php导入excel 代码,php excel 导入导出源代码

导入 require_once ./includes/reader.php; // ExcelFile($filename, $encoding); $data new Spreadsheet_Excel_Reader(); // Set output Encoding. $data->setOutputEncoding(gbk); //”data.xls”是指要导入到mysql中的excel文件 $data->read(date.xls); $db mysql…

PHP面试题及答案解析(1)—PHP语法基础

1. strlen( )与 mb_strlen( )的作用分别是什么&#xff1f; strlen和mb_strlen都是用于获取字符串长度。strlen只针对单字节编码字符&#xff0c;也就是说它计算的是字符串的总字节数。如果是多字节编码&#xff0c;如 gbk 和 utf-8&#xff0c;使用 strlen 得到是该字符的总字…