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

苏州瑞熙网站建设互联网营销师培训班

苏州瑞熙网站建设,互联网营销师培训班,wordpress禁止生成多个缩略图,厦门网站制作建设文章目录反转字符串习题双指针swap 的两种方式反转字符串 本节对应代码随想录中:代码随想录,讲解视频:字符串基础操作! | LeetCode:344.反转字符串_哔哩哔哩_bilibili 习题 题目链接:344. 反转字符串 - …

文章目录

    • 反转字符串
      • 习题
      • 双指针
      • swap 的两种方式

反转字符串

本节对应代码随想录中:代码随想录,讲解视频:字符串基础操作! | LeetCode:344.反转字符串_哔哩哔哩_bilibili

习题

题目链接:344. 反转字符串 - 力扣(LeetCode)

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。
不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

示例 1:
输入:s = ["h","e","l","l","o"]
输出:["o","l","l","e","h"]

双指针

作为数组的第一题,这题还是比较简单的。反转字符串其实就是原来第一个字符变成最后一个字符,原来第二个字符变成倒数第二个字符,以此类推。那其实就是将第一个与最后一个字符交换,将第二个与倒数第二个字符交换,以此类推。并且我们只需要遍历字符串一半的长度就行交换即可。

class Solution {public:void reverseString(vector<char>& s) {int size = s.size();for (int i = 0, j = size - 1; i < size / 2; i++, j--) {swap(s[i], s[j]);}}
};
  • 时间复杂度:O(nnn)。有一个 for 循环,它的迭代次数是数组大小的一半,即 O(n/2),swap 函数交换了两个元素的值,其时间复杂度为 O(1)。因此,这个函数的时间复杂度为 O(n/2 * 1),也就是 O(n)
  • 空间复杂度:O(111)。只使用了常量级别的额外空间存储变量 i、j 和 size,因此空间复杂度为 O(1)

对于本题,其实使用库函数 reverse 就能解题,但显然本题并不是考察库函数的使用,面试的时候更不会如此。但是必须要了解可以使用什么库函数来实现,代码如下:

class Solution {public:void reverseString(vector<char>& s) {reverse(s.begin(),s.end());}
};
  • 时间复杂度:O(nnn)。只调用了一次 C++ 标准库中的 reverse 函数,其时间复杂度为 O(n),其中 n 是数组的大小
  • 空间复杂度:O(111)。没有使用任何额外的内存来存储变量,所以空间复杂度是 O(1)

swap 的两种方式

第一种是比较常见的方式

int tmp = s[i];
s[i] = s[j];
s[j] = tmp;

第二种是通过位运算

int a = 5; // 101
int b = 7; // 111
a ^= b; // 此时 a 的值为 2(101^111=010)
b ^= a; // 此时 b 的值为 5(010^111即(101^111)^111=101)
a ^= b; // 此时 a 的值为 7(010^101即(101^111)^101=111)

解释:利用异或运算符的特性(一个数异或同一个数两次会得到原始的值),这个交换操作不需要临时变量,比第一种方法更快,尤其是在处理大型数据集时。但要注意的是,这种方式只适用于整型数据类型,对于其他类型,例如浮点数、字符或自定义对象等,则需要采用其他方法进行交换。

解题的时候一般的交换元素可以直接用 swap 函数即 swap(a,b)

http://www.shuangfujiaoyu.com/news/25411.html

相关文章:

  • 郑州品牌网站建设官网如何做seo搜索引擎优化
  • 创新的沈阳网站建设网站建设方案设计书
  • 网站后台图片深圳网络推广培训
  • 手机页面制作代码360优化大师下载官网
  • 中小企业网站建设公司app开发需要多少钱
  • 中关村网站建设公司网站seo专员招聘
  • 仁怀企业网站建设seo网站优化教程
  • 做医院网站公司吗自己怎么做百度推广
  • 高端电子商务网站建设百度荤seo公司
  • 电商类网站建设需要多少钱google海外版入口
  • 开发设计公司网站网络营销的核心是什么
  • php网站备份潍坊网站关键词推广
  • 通用网站建设需求分析360优化大师历史版本
  • wordpress 总变量武威网站seo
  • 衡州网站建设seo安徽seo报价
  • 怎么做快递网站的分点外链代发公司
  • 怎么做网站页面网站如何推广
  • ui设计自学学的出来吗天津seo建站
  • thinkphp做网站网站开发报价方案
  • 北京朝阳区房子多少钱一平米青岛网站优化
  • 最好的网站建设多少钱福州网络营销推广公司
  • 空壳网站主体注销百度seo优化排名如何
  • ps做网站像素大小seo的培训班
  • 做网站在哪里可以找到高清壁纸山西seo基础教程
  • 在线学做网站培训机构加盟
  • vue响应式网站开发游戏优化软件
  • 延边州住房城乡建设局网站制作网站需要什么
  • 上海网站建设怎么弄晚上免费b站软件
  • 电商类网站开发方案深圳网站关键词优化公司
  • 2018年企业网站优化应该怎么做浏览器老是出现站长工具