首页 > 编程语言 >代码随想录算法训练营第九天|leetcode151.翻转字符串里的单词、卡码网55.右旋字符串

代码随想录算法训练营第九天|leetcode151.翻转字符串里的单词、卡码网55.右旋字符串

时间:2024-10-24 12:33:25浏览次数:1  
标签:第九天 随想录 列表 切片 split str 字符串 翻转

1 leetcode151.翻转字符串里的单词

题目链接:151. 反转字符串中的单词 - 力扣(LeetCode)

文章链接:代码随想录

视频链接:字符串复杂操作拿捏了! | LeetCode:151.翻转字符串里的单词_哔哩哔哩_bilibili

自己的思路:直接将空格去掉,然后分割字符串为列表,在列表中进行翻转,不在字符串内部操作,因为字符串不可以操作

1.1 自己的代码

class Solution:
    def reverseWords(self, s: str) -> str:
        s = s.split()
        s = list(s)
        left = 0
        right = len(s)-1
        while left<right:
            s[left],s[right] = s[right],s[left]
            left +=1
            right -=1
        return ' '.join(s)

1.2 视频后的学习

1.2.1 字符串内部的操作

思路

  1. 先对字符串首尾空格进行删除的操作
  2. 翻转整个字符串
  3. 将翻转后的字符串用split分割
  4. 对分割后的字符串在进行翻转
  5. join函数进行连接

细节

  1. 删除字符串中的首尾空格是str.strip()
  2. 将字符串分割为列表是str.split()
class Solution:
    def reverseWords(self, s: str) -> str:
        s= s.strip()
        s = s[::-1]
        word = ' '.join(words[::-1] for words in s.split())
        return word
1.2.2 拆分+翻转

思路

  1. 先将字符串拆分成列表
  2. 对列表内的元素进行翻转
  3. 使用join函数对其进行连接
class Solution:
    def reverseWords(self, s: str) -> str:
        s= s.split()
        s= s[::-1]
        return ' '.join(s)

1.3 本题小结

  1. python中字符串类型是不可变类型,所以必须要转换成列表再进行后面的操作
  2. 学会了两个函数split()将字符串拆分成数组;strip()函数是将字符串头尾的空格删除

2. 卡码网55.右旋字符串

题目链接:55. 右旋字符串(第八期模拟笔试)

文章链接:右旋字符串 | 代码随想录

自己的思路:开始真的有些不知所措,看了别人的方法觉得自己真的有点傻,,,

2.1文章学习思路

2.1.1 直接切片翻转
k = int(input())
s = input()
print(s[-k:]+s[:-k])
2.1.2 切片位置变化
k = int(input())
s = input()
print(s[len(s)-k:]+s[:len(s)-k])

2.2 本题小结

  1. 这道题开始没思路,后来看了别人的方法,默默说了一句,我好傻呀,这题我都不会做
  2. python中我对切片掌握的真的还没那么好,所以要记住字符串不能换位置但是可以切片

3.本章小结

  1. 这一块的题目整体而言比较简单,但是就是思考起来,切片掌握的真的不是很好,总是不知道如何切片,日常使用过程中也是经常使用索引,所以这个知识点给忘了
  2. split函数是将字符串转换成列表的
  3. strip函数是将字符串的首尾空格去掉的
  4. 学习一下KMP,但是题肯定是很难学会的,下次再刷题再学一遍

标签:第九天,随想录,列表,切片,split,str,字符串,翻转
From: https://www.cnblogs.com/csfy0524/p/18499351

相关文章

  • 【C#】将bcd字节数组转为10进制字符串
    //////将bcd字节数组转为10进制字符串//////bcd码字节数组///返回转换后的10进制字符串publicstaticstringBCDCodeToDecimalString(byte[]bcd){StringBuildersb=newStringBuilder();for(inti=0;i<bcd.Length;i++){sb.Append(ConvertBCDToInt......
  • 代码随想录算法训练营第二十四天|Day24 回溯算法
    93.复原IP地址题目链接/文章讲解:https://programmercarl.com/0093.%E5%A4%8D%E5%8E%9FIP%E5%9C%B0%E5%9D%80.html视频讲解:https://www.bilibili.com/video/BV1XP4y1U73i/思路char**result;intresultTop;intsegments[3];intisValid(char*s,intstart,intend){......
  • 20241022_095024 c语言 字符串的方法
    源始字符串strlen方法strcat方法strcpy方法strcmp方法大小写转换......
  • 代码随想录算法训练营 | 岛屿数量 深搜,岛屿数量 广搜,岛屿的最大面积
    岛屿数量深搜题目链接:岛屿数量深搜文档讲解︰代码随想录(programmercarl.com)日期:2024-10-23想法:Java代码如下:importjava.util.Scanner;publicclassMain{publicstaticint[][]dir={{0,1},{1,0},{-1,0},{0,-1}};publicstaticvoiddfs(boolean[][]v......
  • 【代码随想录Day50】图论Part02
    岛屿数量深搜题目链接/文章讲解:代码随想录classSolution{//计算网格中岛屿的数量publicintnumIslands(char[][]grid){intsum=0;//初始化岛屿数量为0//遍历整个网格for(inti=0;i<grid.length;i++){......
  • 代码随想录第七天
    454.四数相加II给你四个整数数组nums1、nums2、nums3和nums4,数组长度都是n,请你计算有多少个元组(i,j,k,l)能满足:0<=i,j,k,l<nnums1[i]+nums2[j]+nums3[k]+nums4[l]==0示例1:输入:nums1=[1,2],nums2=[-2,-1],nums3=[-1,2],nums4=[0,......
  • 字符串优化
    字符串问题\(\mathcalO(nm)-\mathcalO(1)\)比较字符串子串大小令\(lcp_{x,y}=\operatorname{lcp}(s[x\simn],s[y\simn])\),有\[lcp_{x,y}=\left\{\begin{aligned}&lcp_{x+1,y+1}+1&&s_x=s_y\\&0&&s_x\not=s_y\end{aligned}\right.\]......
  • 代码训练营第22天|补第9天的KMP算法,28. 找出字符串中第一个匹配项的下标|459.重复的子
    前置知识文章链接:https://programmercarl.com/0028.实现strStr.html#思路KMP的经典思想就是:当出现字符串不匹配时,可以记录一部分之前已经匹配的文本内容,利用这些信息避免从头再去做匹配。前缀表:next数组就是一个前缀表(prefixtable)。前缀表是用来回退的,它记录了模式串与主......
  • 字符串的切分及其拓展
    假如有以下email数据“[email protected],[email protected],[email protected],..”现需要把email中的用户部分和邮件地址部分分离,分离后以键值对应的方式放入HashMap思路:我们要将Email的用户部分和邮件地址部分分离,分离后以键值对应的方式放入HashMap,要思考一下怎么将一整个字符变为aa......
  • 代码随想录刷题学习日记
    仅为个人记录复盘学习历程,解题思路来自代码随想录代码随想录刷题笔记总结网址:代码随想录二叉树理论基础学习二叉树有两种主要的形式:满二叉树和完全二叉树。满二叉树:只有度为0的结点和度为2的结点,且度为0的结点在同一层的二叉树。深度为k,有2^k-1个节点。完全二叉树:除了最......