首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Python 第30课】 字符串的索引和切片

建议关注池老师的微信号,他经常会介绍一些Mac的使用技巧,让你更好地发挥Mac的强大功能。不用Mac的同学也建议去看看,他的文章有关技术和人文,相信你会得到不少启发。...#==== 关于字符串的事 ====# 之前说了,字符串和list有很多不得不说的事。今天就来说说字符串的一些与list相似的操作。 1. 遍历 通过for...in可以遍历字符串中的每一个字符。...索引访问 通过[]加索引的方式,访问字符串中的某个字符。 print word[0] print word[-2] 与list不同的是,字符串能通过索引访问去更改其中的字符。...word[1] = 'a' 这样的赋值是错误的。 3. 切片 通过两个参数,截取一段子串,具体规则和list相同。...连接字符 join方法也可以对字符串使用,作用就是用连接符把字符串中的每个字符重新连接成一个新字符串。不过觉得这个方法有点鸡肋,不知道在什么场景下会用到。

94170

【leetcode刷题】最长回文串【409】

二、解题报告 1.思路分析 2.代码详解 3.注意事项C++ 一、题目 1.题目描述 二、解题报告 1.思路分析 根据ASCII对照表,我们可以知道所有的大小写字符都是以ASCII数字存储,那么所有字母...-‘A’=相对数字位置,另其当作存储对应大小写字母的数组索引【对照表链接】 然后,开始遍历传入的字符串,当遇到对应字母时,相减得到对应索引进行++【计数操作】,从而实现字母与计数索引挂钩起来 最长回文串...=所有奇数个字母的计数都减一+所有偶数计数+1或0【若无奇数,则加0;若有奇数,则加1;影响来源于是否有最中间的单一不配对的数】 2.代码详解 C++ class Solution { public:...} } b=b+c; return b; } }; 3.注意事项C++ 取模操作是% 注意整体总数为偶数情况...字符串的长度获取可以用length();eg:s.length()

26610
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python基础数据类型:列表【增删改查

    ,在正向循环删除列表元素时后面元素的索引会发生变化,奇数索引可能变为偶数索引。...,再下一次变为-4,直到-(n+1)/2,这个数必须为整数int类型 #因为range顾头不顾腚,所以其范围要多一位,即-(int((n+1)/2)+1) # 如果列表中的元素个数为偶数n,要删除索引号为奇数...,不会改变被删除元素前面元素的索引号,索引是奇数的还是奇数,是偶数的还是偶数。...#并且索引号都使从左往右数的索引号,不用管列表中的元素的个数到底是奇数个还是偶数个。直接按正索引号去删除。...按指定元素删除,如果有重名元素,默认删除从左数第一个,所以要删除多次 print(l1) #[11, 33, 55] #2:(自 = 讲) # 删除索引为奇数的元素,相当于取出索引为偶数的元素,取完了赋值给原列表

    1.1K40

    【Day28】力扣算法(超详细思路+注释)

    , s2.length <= 100 s1.length == s2.length s1 和 s2 仅由小写英文字母组成 解题思路: 题目已经给定我们两个长度相同字符串s1和s2,要求我们判断字符串s2...奇偶链表 题目描述: 给定单链表的头节点 head ,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。...第一个节点的索引被认为是 奇数 , 第二个节点的索引为 偶数 ,以此类推。 请注意,偶数组和奇数组内部的相对顺序应该与输入时保持一致。...题目要求我们将所有奇数节点连在一块,所有偶数节点连在一块,且奇数连链表于偶数链表拼接。 必须在 O(1) 的额外空间复杂度和 O(n) 的时间复杂度下解决这个问题。...因为奇数偶数是交替的,也就是奇数下一个节点为偶数,偶数下一个节点为奇数。我们就可以将所有奇数节点指向其后偶数节点的下一节点,偶数节点也指向其后奇数节点的下一个节点。

    44130

    四种方法求最长回文子串

    大家好,又见面了,我是你们的朋友全栈君。 所谓回文串,就是正着读和倒着读结果都一样的回文字符串。 比如: a, aba, abccba都是回文串, ab, abb, abca都不是回文串。...s; cout << "The longest palindrome: " << longestPalindrome(s); return 0; } 三、中心扩展法 中心扩展就是把给定的字符串的每一个字母当做中心...需要考虑两种情况: 长度为奇数的回文串,比如a, aba, abcba 长度为偶数的回文串,比如aa, abba #include #include using...s; cout << "The longest palindrome: " << longestPalindrome(s); return 0; } 三、中心扩展法 中心扩展就是把给定的字符串的每一个字母当做中心...需要考虑两种情况: 长度为奇数的回文串,比如a, aba, abcba 长度为偶数的回文串,比如aa, abba #include #include using

    97730

    【LeetCode题解-005】Longest Palindrome Substring

    暴力法 选出所有子字符串可能的开始和结束位置,并检验它是不是回文。 ?...当字符串中字符出现次数为偶数时,必然可以加入最长回文子串 当字符串中字符出现次数为奇数时,分情况讨论: 如果出现次数为大于1的奇数n,则可以加入n-1个对应字符到最长回文子串, 最终的最长回文子串,最中间还可以加入一个单一字符...如果我们已经知道 'bab' 是回文,那么很明显,'ababa' 一定是回文,因为它的左首字母和右尾字母是相同的。 我们给出 P(i,j)P(i,j) 的定义如下: ?...这产生了一个直观的动态规划解法,我们首先初始化一字母和二字母的回文,然后找到所有三字母回文,并依此类推… /** * 动态规划算法 * * @param s *...原因在于所含字母数为偶数的回文的中心可以处于两字母之间(例如 'abba'的中心在两个 'b' 之间)。 /** * 中心扩展算法 * 回文中心的两侧互为镜像。

    44860

    蓝桥练习题总结(一)字母图形、完美的代价、01串、序列求和

    ,它从左往右读和从右往左读是一样的。...开始准备: 回文字符串,使字符串满足两端中心对称,设置一个头指针和尾指针。头指针指向第一个字母,下标为0;尾指针指向最后一个字母,下标为n - 1;并再使用一个指针记录尾指针开始遍历的位置。...内层循环从尾指针k开始,从字符串末尾向前遍历,寻找与头指针i处的字符相等的字符。...// 如果i和k相遇,说明中间的字符没有匹配的字符 if (i == k) { // 如果字符串长度为偶数,或者flag已经被设置为...// 内层循环从字符串末尾向前遍历,寻找与a[i]相等的字符 for (k = t; k >= i; --k) { // 如果i和k相遇,说明中间的字符没有匹配的字符

    8910

    从数据页和B+树的角度看索引失效原因

    面试官:我看你建立熟悉数据库索引,那索引失效有哪些场景? 我:巴拉巴拉,把从晚上背的6,7条失效场景一字不落的背出来了 我:心里想,这问题能难道我?...我们以test_index表的col1列建立一个索引,col1是不是主键,以col1构建的B+树结构如下: 从图中我们可以看到和聚簇索引的区别: 叶子节点和非叶子节点都是使用col1列(非主键)的大小进行页记录排序...,而聚簇索引使用的是主键 叶子节点存储的数据是col1和主键两个列 索引页的记录存储的是col1和页号 什么是索引覆盖和回表?...like模糊匹配查询 左右模糊匹配的时候,也就是 like %col2 或者 like %col2% 这两种方式都会造成索引失效,我们看具体原因: B+树叶子结点记录是字符串时,按照组成字符串字母的顺序排序的...,%号放左边,两个%%号,查询的结果如下: %号放左边时,匹配的是尾部的字母,而尾部字是母没有顺序的,因为字符串不能按顺序查询,索引索引会失效 两个%%号是因为只有首字母进行索引排序,其他字母却是无需的

    658150

    深入了解Java数组操作及常用算法题

    我们将通过一个具体的代码示例来详细说明每个操作的实现和作用。 在Java中,数组操作是一项基本技能。我们从提供的代码开始,逐步分析每个题目,并给出相应的解决方案。...[i] = random.nextInt(89) + 10;//生成10 - 99 之间的随机数 } //打印出生成的随机数组 System.out.println("第一个随机数组是:" + Arrays.toString...,用于存储字符串数组中每个字符串首字母大写后的结果。...最终,我们得到了一个新数组arr_new9,其中包含了字符串数组中每个字符串首字母大写的结果。...[i] = random.nextInt(89) + 10;//生成10 - 99 之间的随机数 } //打印出生成的随机数组 System.out.println("生成一个新数组是:" + Arrays.toString

    22510

    【算法题解】 Day28 双指针

    调整数组顺序使奇数位于偶数前面 难度:easy 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。...然后从 nums右侧开始遍历,如果遇到的是偶数,就表示这个元素已经调整完成了,继续从右往左遍历,直到遇到一个奇数。...交换这个偶数和奇数的位置,并且重复两边的遍历,直到在中间相遇,nums 调整完成。  ...翻转单词顺序 难度:easy 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student....方法一:双指针 思路 倒序遍历字符串 s,记录单词左右索引边界 i , j ; 每确定一个单词的边界,则将其添加至单词列表 res ; 最终,将单词列表拼接为字符串,并返回即可。

    15120

    Python字符串的索引和切片_Python自学第八节

    在安全和运维工作中所要处理的数据类型主要是字符串,每个字符串都是一个对象,来自 str 类。所以每个字符串都可以调用 str 类的方法。dir(str)。...索引: 字符串中的每个字符都可以被看作一个独立的元素,都有一个相应的索引编号,索引编号从 0 开始。索引寓指一个编号对应字符串的顺序。...>>> a = 'Python' >>> a[3] #从左往右排 0开始,代表第4个字符 'h' >>> a[-3] #从右往左排 -1开始,代表第3个字符 'h' 切片: 指定一个索引区间,取出指定的字符串称之为切片...切片的格式 [起始索引:结束索引:步长] 起始索引不指定默认为0 结束索引不指定一直到终点,指定不包含该值,类似于range函数 步长默认为1 >>> b = 'ILovePython' #取值Love...>>> b[1:5] 'Love' >>> b[5:] #取Python的值,省略即为到最后 'Python' >>> b[2::2] #从代表2的字符开始隔2取值 'oeyhn' >>> b[

    41020

    数组排序问题-LeetCode 905、922、1122、451(哈希表,双指针)

    编程题 【LeetCode #905】按奇偶排序数组 给定一个非负整数数组 A,返回一个数组,在该数组中, A 的所有偶数元素之后跟着所有奇数元素。 你可以返回满足此条件的任何数组作为答案。...解题思路: 使用双指针left和right,如果left指向数值为偶数,则向右移动,如果right指向的数值为奇数则向左移动,如果两个同时不满足,那就交换两个数值的位置!...对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。 你可以返回任何满足上述条件的数组作为答案。...解题思路: 与上一题一样的思路,不过此时的双指针不再是头尾指针,而是奇偶索引指针,即一个指向奇索引,另外一个指向偶索引。然后判断其值得奇偶情况即可!...,请将字符串里的字符按照出现的频率降序排列。

    70740

    进制算法题(进制转换、Alice和Bob的爱恨情仇)

    " + s; // 其他字符也行, 不是一定要 "#" // 在前面添加一个"#"字符,这是为了让字符串的索引从1开始,以方便处理。...输出格式 输出一行,包含一个字符串,表示Alice和Bob之中获胜的那个人。 诈骗题。 注意到 k 为奇数,而且每次至少可以取走一个石子。...是奇数,那么先手总是可以取走 (k^m) 个小饼干,使得剩下的小饼干数量是偶数。...在这道题中,题目还特别强调了 k 是奇数,由此我们可以进行大胆的推测这个博弈的结果跟奇偶数有很大关系。 由于每次取值都是 k 的幂次方,由于 k 是奇数,故每次取的数也将是奇数。...总结: 在一个奇数堆中,由于每次取不超过总数的奇数个数的饼干,所以我们到最后取完的时候一定会取奇数次,同理可得,在一个偶数堆中则是取偶数次。

    14210

    Python基础语法之输入输出、基本数据类型介绍

    1.在定义变量时,为了保证代码格式,=的左右应该各保留一个空格 2.下划线命名法和大驼峰命名法: 所有字母都小写,单词之间用_分割: max_length、min_length、hello_world...首字母大写,每个单词开头字母大写,其余小写 MaxLength、MinLength、HelloWorld 命名规范主要是让代码变得更清晰、方便理解和观察 数据类型 int float bool str...索引包括正索引和负索引两部分,如下图所示,以list对象a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]为例: ?...start_index:表示起始索引(包含该索引对应值);该参数省略时,表示从对象“端点”开始取值,至于是从“起点”还是从“终点”开始,则由step参数的正负决定,step为正从“起点”开始,为负从“终点...6 切片常用操作 1、取奇数、偶数位置的数据 a='0123456789' print(a[::2]) # 获取偶数位置数据 print(a[1::2]) # 获取奇数位置数据 2、字符串反转 a='

    96820

    Leetcode 【524、767、1053、1079】

    如果答案不止一个,返回长度最长且字典序最小的单词。如果答案不存在,返回空字符串。 双指针法。对于单词数组中的每个单词 word,字符串 s 和 word 逐字符比较向后滑动。...方法1(Sort): 以 S = "acbaa" 为例,先按照 S 的每个字母出现的次数从大到小排列,得到一个列表,如 A = ['a','a','a','b','c'],然后建立一个和 S 相同长度的列表...ans = [None] * len(S),将 A 中的字符按顺序先安排在 ans 的偶数位置上(ans = ['a',None, 'a', None, 'a']),偶数位置放满后,将剩下一半数字放在奇数位置上...,后一半安排在奇数位置上 return "".join(ans) 方法2(Heap): 按照字母出现的次数建立大根堆(实际上可以转化为按照字母出现的次数的负值建立小根堆,即 (-次数,...第二个交换的位置 second 是从 first 的下一个位置开始,小于 A[first] 且最靠近 A[first] 的最大值的索引位置(如 [1,9,4,6,10] 中,first = 1,小于 A

    72230

    20181231-生成字符串大小写字母和

    生成字符串a1b2c3d4e5f6g7h8i9j10 此题生成的字符串为字母和数字夹杂生成,使用range函数从97开始 算法: 当为97的时候,生成a和1 1=97-96 当为98的时候,生成b和2...2=98-96 当为99的时候,生成c和3 3=99-96 当为100的时候,生成d和4 4=100-96 。。。...得出算法为生成的数字为字母的ascii减去96 s="" for i in range(97,107):     s+=chr(i)+str(i-96) #chr(i)生成对应的字母,i-96生成对应的数字...生成字符串a1B2c3D4e5F6g7H8i9J10 寻找小写字母与大写字母的规律,如能否被2整除 a   97  b 98   c99 A  65  B 66   C67 ord('a')-ord('...输出奇数字母和偶数字母到两个列表中 需求:奇偶数分别进入2个列表 输入:数字 输出: 1.奇数列表odd 2.偶数列表even odd=[] even=[] for i in range(100):

    74610

    99题--Python闯关

    aa = [True, 1, 0, 'x', None, 'x', False, 2, True] aa.remove(aa[4]) print(aa) 8、删除列表中索引号为奇数(或偶数)的元素。...= ['x', 'y', 'z'] for i in ee: print(ee.index(i), i) 13、将列表 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 拆分为奇数组和偶数组两个列表...15、从列表 [1,4,7,2,5,8] 索引为3的位置开始,依次插入列表 [‘x’,‘y’,‘z’] 的所有元素。 16、快速生成由 [5,50) 区间内的整数组成的列表。...60、将列表 [‘a’,‘b’,‘c’] 中各个元素用’|'连接成一个字符串。 61、将字符串 ‘abc’ 相邻的两个字母之间加上半角逗号,生成新的字符串。...62、从键盘输入手机号码,输出形如 ‘Mobile: 186 6677 7788’ 的字符串。 63、从键盘输入年月日时分秒,输出形如 ‘2019-05-01 12:00:00’ 的字符串。

    1.6K20
    领券