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

我国十大b2c网站长沙专业网站制作

我国十大b2c网站,长沙专业网站制作,建设网站如入什么费,wordpress百度地图插件下载字符串 摘自Python文档-标准库: 在Python中, 字符串是由 Unicode 码位构成的不可变序列。 由于不存在单独的“字符”类型,对字符串做索引操作将产生一个长度为 1 的字符串。 也就是说,对于一个非空字符串 s, s[0] s[0:1]。 不存…

字符串

摘自Python文档-标准库:
在Python中, 字符串是由 Unicode 码位构成的不可变序列
由于不存在单独的“字符”类型,对字符串做索引操作将产生一个长度为 1 的字符串。 也就是说,对于一个非空字符串 s, s[0] == s[0:1]

不存在可变的字符串类型,但是 str.join()io.StringIO 可以被被用来根据多个片段高效率地构建字符串。

字符串常用方法:

  1. 查找子串 str.find(_sub_[, _start_[, _end_]])
    返回子字符串 subs[start:end] 切片内被找到的最小索引。 可选参数 startend 会被解读为切片表示法。 如果 sub 未被找到则返回 -1
  2. 拼接字符串 str.join(_iterable_)
    返回一个由 iterable 中的字符串拼接而成的字符串。 如果 iterable 中存在任何非字符串值包括 bytes 对象则会引发 TypeError。 调用该方法的字符串将作为元素之间的分隔。
  3. 切割字符串 str.split(_sep=None_, _maxsplit=- 1_)
    返回一个由字符串内单词组成的列表,使用 sep 作为分隔字符串。 如果给出了 maxsplit,则最多进行 maxsplit 次拆分(因此,列表最多会有 maxsplit+1 个元素)。 如果 maxsplit 未指定或为 -1,则不限制拆分次数(进行所有可能的拆分)。
  4. 去除前导和末尾字符 str.strip([_chars_])
    返回原字符串的副本,移除其中的前导和末尾字符。 chars 参数为指定要移除字符的字符串。 如果省略或为 None,则 chars 参数默认移除空白符。 实际上 chars 参数并非指定单个前缀或后缀;而是会移除参数值的所有组合。

344.反转字符串

输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。
#双指针

class Solution:def reverseString(self, s: List[str]) -> None:"""Do not return anything, modify s in-place instead."""n = len(s)for i in range(n // 2):s[i], s[n - i - 1] = s[n - i - 1], s[i]

python中最简单的反转是用 `[::-1]

541. 反转字符串 II

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

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

按照题意,模拟。

class Solution:def reverseStr(self, s: str, k: int) -> str:right = 2*kn = len(s)res = ""while right <= n: res += s[right-2*k:right-k][::-1] + s[right-k:right]right += 2*kright -= 2*kif n - len(res) < k:res += s[right:][::-1]elif n-len(res)>= k:res += s[right:right+k][::-1] + s[right+k:]return res

可以借助Python切片特性简化:

class Solution:def reverseStr(self, s: str, k: int) -> str:p = 0while p < len(s):p2 = p + ks = s[:p] + s[p: p2][::-1] + s[p2:]p = p + 2 * kreturn s

剑指 Offer 05. 替换空格

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。

class Solution:def replaceSpace(self, s: str) -> str:res = ""for c in s:if c == " ":res += "%20"else:res += creturn res

151. 反转字符串中的单词

给你一个字符串 s ,请你反转字符串中 单词 的顺序。

class Solution:def reverseWords(self, s: str) -> str:s = [x  for x in s.split(" ") if x != ''] return " ".join(s[::-1])

剑指 Offer 58 - II. 左旋转字符串

字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。

class Solution:def reverseLeftWords(self, s: str, n: int) -> str:s = s[n:] + s[:n]return s

28. 找出字符串中第一个匹配项的下标

给你两个字符串 haystackneedle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1

最简单的是直接遍历:

class Solution:def strStr(self, haystack: str, needle: str) -> int:n = len(haystack)left = 0right = len(needle)if right == 0:return 0while right <= n:if haystack[left: right] == needle:return leftleft += 1right += 1return -1

或者选择进入KMP:
KMP算法名字由发明它的三个人的名字组成,解决字符串的匹配问题。
假设在字符串s中匹配模板t
s:aabaabaaf
t:aabaaf

前缀和后缀:即字符串的一部分。
前缀即a, aa, aab, aaba, aabaa
后缀即f, af, aaf, baaf, abaaf

最长相等前后缀(前缀表next)
在这里插入图片描述

利用前缀表,当匹配失败的时候,可以跳到下一个匹配的位置。(本例中,aabaaf匹配失败时,找aabaa的前缀表,得到2,于是下一个匹配b。

class Solution:def getNext(s):next = [0] * len(s)j = 0  # j代表前缀末尾next[j] = 0for i in range(1,len(s)): # i代表后缀末尾while j > 0 and s[i] != s[j]:# 不等时回退jj = next[j-1]if s[i] == s[j]: # 相等时, j+1j += 1next[i] = jreturn nextdef strStr(self, haystack: str, needle: str) -> int:if len(needle) == 0:return 0next = Solution.getNext(needle)j = 0for i in range(len(haystack)):while j > 0 and  haystack[i] != needle[j]:j = next[j-1]if haystack[i] == needle[j]:j += 1if j == len(needle):return i-len(needle)+1 return -1

getNext的j=next[j-1]那里不是特别明白,但是背下来了。
next[j]就是记录着j(包括j)之前的子串的相同前后缀的长度

重复的子字符串

给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。

  1. 暴力
class Solution:def repeatedSubstringPattern(self, s: str) -> bool:n = len(s)if n <= 1:return Falsesubstr = ""for i in range(1, n//2 + 1):if n % i == 0:substr = s[:i]if substr * (n//i) == s:return Truereturn False
  1. find
    如果s由重复子串组成,那么两个s拼接在一起,中间肯定会再出现一个s。
    (当然这只说明了必要性,还要证明充分性。)
class Solution:def repeatedSubstringPattern(self, s: str) -> bool:n = len(s)if n <= 1:return Falsess = s[1:] + s[:-1]             return ss.find(s) != -1

字符串小结

字符串简单的题很简单,就是双指针、模拟,主要考察对字符串的基本操作。
复杂的会涉及到KMP(在s中找t)。虽然有库函数(find)可以实现这个过程。

http://www.zhongyajixie.com/news/41666.html

相关文章:

  • 网站的投票 计数模块怎么做百度怎么做推广
  • 电子商务网站建设策划书的流程必应搜索引擎入口
  • 杭州网站建设很 棒好的网站或网页
  • 重庆网站建设模板百度通用网址
  • 如何查询网站的外链友情链接方面
  • 网站备案幕布申请郑州seo技术外包
  • 成都微信网站制作网站创建流程
  • 公司网站做的好的公司西安疫情最新消息1小时内
  • 保定百度推广电话seo怎么做最佳
  • 微信公众号手机网站开发网站推广 方法
  • 淘宝做的网站优化安卓手机优化软件排名
  • 网站店铺的图片怎么做的seo综合查询 站长工具
  • 经典语录网站做合格党员com网站域名注册
  • 大网站制作公司推广平台有哪些
  • 安康市城乡建设规划局 网站河南郑州最新消息
  • excel表格做网站牛推网络
  • 网站模板 寻模板360推广官网
  • 营销战略肇庆seo排名外包
  • 商城网站源码下载免费发布推广的网站
  • 网站建设岗位有哪些海南网站网络推广
  • 表白制作网站百度竞价托管外包代运营
  • 怎么做捕鱼网站一个免费的网站
  • WordPress插件api调用windows优化大师免费版
  • 餐饮加盟网网站建设公司企业网站模板
  • 乐清定制网站建设电话佛山网站建设解决方案
  • 永久免费个人网站申请深圳专业seo外包
  • 在统计局网站上如何做图表互联网营销方式有哪些
  • 网站制作济南可以看封禁网站的浏览器
  • 简洁大气的网站设计怎么创建网站平台
  • 网站推广优化平台安卓优化大师下载安装到手机