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

重庆网站制作企业网站建设 实施计划

重庆网站制作企业,网站建设 实施计划,广州小程序制作开发,南宁seo网站推广服务提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 leetcode.186.反转字符串中的单词 leetcode.186.反转字符串中的单词 https://leetcode.cn/problems/reverse-words-in-a-string-ii/ 给你一个字符数组 s &#xf…

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • leetcode.186.反转字符串中的单词


leetcode.186.反转字符串中的单词

https://leetcode.cn/problems/reverse-words-in-a-string-ii/

给你一个字符数组 s ,反转其中 单词 的顺序。

单词 的定义为:单词是一个由非空格字符组成的序列。s 中的单词将会由单个空格分隔。

必须设计并实现 原地 解法来解决此问题,即不分配额外的空间。

示例 1:

输入:s = [“t”,“h”,“e”," “,“s”,“k”,“y”,” “,“i”,“s”,” “,“b”,“l”,“u”,“e”]
输出:[“b”,“l”,“u”,“e”,” “,“i”,“s”,” “,“s”,“k”,“y”,” ",“t”,“h”,“e”]

思路:
先把全体字符全部反转,然后找到每个空格之间的单词,反转每个单词

class Solution:def reverseWords(self, s: List[str]) -> None:"""Do not return anything, modify s in-place instead."""def reverse(s_list):if len(s_list)==1:return s_listleft = 0right = len(s_list)-1while left < right:s_list[left], s_list[right] = s_list[right], s_list[left]left += 1right -= 1return s_listreverse(s)if len(s) == 1:return sex_left = 0ex_right = 1while ex_right<len(s):if s[ex_right] != " " :ex_right += 1else:s[ex_left:ex_right] =  reverse(s[ex_left:ex_right])ex_left = ex_right + 1ex_right += 1s[ex_left:ex_right] =  reverse(s[ex_left:ex_right])

在Python中,字符串是不可变(immutable)的,这意味着一旦一个字符串被创建,你不能改变这个字符串的内容。但是,列表(list)是可变的(mutable),这意味着你可以改变列表中的元素。
在你提供的代码中,你正在处理一个字符串列表 s。下面是关于你的代码的一些解释,以及何时列表的原始值会被修改,何时不会:

  1. 函数 reverse(s_list)
    • 这个函数接收一个列表 s_list,并在原地(in-place)反转这个列表。这意味着 s_list 的原始值会被修改,因为列表是可变的。
  2. 调用 reverse(s)
    • 当你调用 reverse(s) 时,列表 s 的内容会被反转。由于 reverse 函数是原地修改列表,所以 s 的原始值会被改变。
  3. 切片赋值
    • 表达式 s[ex_left:ex_right] = reverse(s[ex_left:ex_right]) 是将 s 列表中的一个切片替换为另一个反转后的切片。这同样会修改原始列表 s
      总的来说,由于列表是可变的,任何对列表的修改(如元素赋值、切片赋值、方法调用如 list.append()list.extend() 等)都会改变原始列表。
      需要注意的是,虽然列表本身是可变的,但如果你在列表中存储的是字符串,那么这些字符串本身是不可变的。例如,如果你尝试 s[0][0] = 'a',这将会引发错误,因为你不能修改字符串的某个字符。但你可以通过赋值来替换整个字符串,例如 s[0] = 'another_string',这将修改列表 s 的第一个元素。
      最后,代码中的注释 # Do not return anything, modify s in-place instead. 表明这个函数的目的是修改传入的列表 s,而不是返回一个新的列表。根据你的代码逻辑,原始的列表 s 会被就地修改。

第26行修改成这样就会失败:
reverse(s[ex_left:ex_right])
这是为什么?

当你调用 reverse(s[ex_left:ex_right]) 而不是使用切片赋值,你确实调用了 reverse 函数,该函数会原地修改传入的列表。然而,s[ex_left:ex_right] 是一个列表的切片,它创建了一个新的列表(这个新列表是原始列表 s 的一个子集的浅拷贝),然后你将这个新列表传递给了 reverse 函数。
以下是为什么这样做不会修改原始列表 s 的原因:

  • 列表的切片操作返回一个新的列表,即使原始列表是可变的。
  • 当你将这个切片传递给 reverse 函数时,实际上你是在反转这个新列表,而不是原始列表 s
  • 由于新列表与原始列表 s 是独立的,所以对新列表的修改不会影响原始列表。
    为了修改原始列表 s,你需要使用切片赋值,像这样:
s[ex_left:ex_right] = reverse(s[ex_left:ex_right])

这个表达式将反转后的新列表(reverse(s[ex_left:ex_right]) 的结果)赋值给原始列表 s 的相应切片位置,从而修改了原始列表 s
所以,为了达到你的目的,你应该保留原来的切片赋值方式,而不是仅仅调用 reverse(s[ex_left:ex_right])

http://www.yayakq.cn/news/243315/

相关文章:

  • 如何用ps制作网站wordpress加速会主题曲
  • 罗定微网站建设南漳县建设局网站
  • 网站建设方案策划书ppt模板下载怎么做网站截图
  • 网站建设新闻发布招商网站建设免费
  • 首都农村医学人才培养体系建设与农村医学人才培养的研究与实践 网站重庆营销型网站
  • seo网站怎么做wordpress怎么开启
  • 公司做网站最低需用多少钱画图标网站
  • 漳州最便宜的网站建设价格服装公司网站模板
  • 推广公司网站有哪些方式邯郸建网站公司
  • 云谷系统网站开发网站建设的设立方式
  • 徐州网站建设百度引擎搜索推广
  • 建一个网站的手机电脑做农产品网站
  • 组建网站 多少钱大型集团公司网站建设方案
  • wordpress响应式网站模板下载wordpress 移动分享
  • 江苏中南建设集团网站是多少钱洛阳网站建设的公司哪家好
  • 网上做石材去哪个网站山东省东营市建设局网站
  • 什么软件可以做网站html怎么在雅虎做网站收入
  • 会议专题网站建设报价单网络规划设计师 招聘
  • 最新网站技术网站建设 小知识
  • 西安seo招聘前端seo是什么
  • 张家界做网站公司北京商业设计网站
  • 做蛋白go分析网站营销方案 网站
  • 网站备案主体济南网站建设行知科技不错
  • 个人业务网站创建wordpress后台仅显示当前主题
  • 营销型网站的三大特点wordpress 付费主题 时间
  • .net网站开发视频做分销的网站
  • 深圳app设计网站建设有哪个网站可以学做吃的
  • php网站修改代码手机网站翻页效果
  • 衡阳网站建设步骤浙江网站怎么做推广
  • 网站开发的源码网站建设 锋云科技公司