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

面试官让用 5 种 python 方法实现字符串反转 ?对不起我有16种……

关键词:Python字符串翻转;面试题 最近身边有个朋友,因为经受不住年薪30W+的诱惑,立志转行成为一名程序员。在自学编程一个月以后,假装自己是学生哥,信心满满地和应届毕业生一起参加了校招。...方法一:反转列表法 a = 'abcdef' b = list(a) b.reverse() b = ''.join(b) print(b) Python中,列表可以进行反转,我们只要把字符串转换成列表...方法六:列表弹出法 a = 'abcdef' a = list(a) b = '' while len(a) > 0: b = b + a.pop() print(b) 列表有一种弹出的方法pop...我们设置变量b,然后不断弹出字符串的最后一个字符,加入变量b中,最终使得字符串反转。...先创建一个字符串倒序相加函数和字符串,一起传入reduce函数中,运行,就可以进行字符串倒序累积相加,最后反转字符串。

1.4K10

字符串反转的实现方法总结「建议收藏」

文章目录 方法1:对称交换法 方法2:函数递归法 方法3:列表反转法 方法4:循环反向迭代法 方法5:倒序切片法 方法6:遍历索引法 方法7:反向遍历索引法 方法8:列表弹出法 方法9:反向循环迭代法...('反转前的字符串:', str) # abcdef print('反转后的字符串:', newStr) # fedcba 说明: Python中,列表可以进行反转,我们只要把字符串转换成列表...每弹出一个元素就加入到空字符串 newStr中,最终实现原字符串的反转。...:', str) # abcdef print('反转后的字符串:', newStr) # fedcba 说明: 使用python中的reduce()函数。...先创建一个字符串倒序相加函数,然后将字符串和新创建的函数一起传入reduce()函数中,进行字符串倒序累积相加,最后实现反转字符串。

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

    python笔记(一)

    (值):根据值删除,只删除一次就停止,如果删除多个同样的值需要用循环判断是否删除干净 弹出列表中最后一个元素:.pop()(弹出的元素可使用,但是不会在列表中存在了) 删除和弹出的区别:删除之后不可使用...,如果VAR1位大写,VAR2为小写,则if返回值为FALSE 如果不想区分大小写,可以先使用“.lower()”都转换为小写再比,而且不会影响原来变量中的内容 比较符号: 等于:==...,或将列表作为值存储在字典中,这称为嵌套。...你可以在列表中嵌套字典、在字典中嵌套列表甚至在字典中嵌套字典 alien_0 = {'color': 'green', 'points': 5} alien_1 = {'...,在python2中使用raw_input) 有时候提示是信息超过一行,可以使用变量来存储(\n是换行) VAR_INT=int(VAR_STR)(将字符串类型转换成整型) while循环: while

    1.5K30

    变量、简单数据类型、列表

    你可以将余生都用来学习Python和编程的纷繁难懂之处,但这样你什么项目都完不成。不要企图去编写完美无缺的代码;先编写行之有效的代码,再决定是对其做进一步改进,还是转而去编写新代码。...你可以创建包含字母表中所有字母、数字0~9或所有家庭成员名字的列表;也可以将任何元素加入列表中,其中的元素可以没有任何关系。在Python中,用方括号([ ])来表示列表,并用逗号来分隔其中的元素。...索引:在Python中,第一个列表元素的索引为0,而不是1。Python为访问最后一个列表元素提供了一种特殊语法。...(3).弹出列表中任何位置处的元素实际上,你可以使用pop( )来删除列表中任何位置的元素,只需在括号中指定要删除的元素的索引即可。...另外,编写for循环时,对于用于存储列表中每个值的临时变量,可指定任何名称使用单数和复数式名称,可帮助你判断代码段处理的是单个列表还是整个列表。

    1.6K20

    环检测算法及拓扑排序(修订版)

    其实这种场景在现实生活中也十分常见,比如我们写代码 import 包也是一个例子,必须合理设计代码目录结构,否则会出现循环依赖,编译器会报错,所以编译器实际上也使用了类似算法来判断你的代码是否能够成功编译...3、对 BFS 队列进行初始化,将入度为 0 的节点首先装入队列。 4、开始执行 BFS 循环,不断弹出队列中的节点,减少相邻节点的入度,并将入度变为 0 的节点加入队列。...我画个图你就容易理解了,比如下面这幅图,节点中的数字代表该节点的入度: 队列进行初始化后,入度为 0 的节点首先被加入队列: 开始执行 BFS 循环,从队列中弹出一个节点,减少相邻节点的入度,同时将新产生的入度为...0 的节点加入队列: 继续从队列弹出节点,并减少相邻节点的入度,这一次没有新产生的入度为 0 的节点: 继续从队列弹出节点,并减少相邻节点的入度,同时将新产生的入度为 0 的节点加入队列: 继续弹出节点...比如下面这种情况,队列中最初只有一个入度为 0 的节点: 当弹出这个节点并减小相邻节点的入度之后队列为空,但并没有产生新的入度为 0 的节点加入队列,所以 BFS 算法终止: 你看到了,如果存在节点没有被遍历

    1.3K20

    每日一刷《剑指offer》字符串篇之左旋转字符串

    例如,字符序列 S = ”abcXYZdef” , 要求输出循环左移 3 位后的结果,即 “XYZdefabc”举例解题思路方法一:遍历拼接;既然循环左移是前面n个字符平移到了最后,我们就可以分开加入字符串中...方法二:先将字符串转换为单个字符,申请一个临时数组,然后再遍历这个字符串的每个字符,如果不是空格就把遍历的字符添加到临时数组中,如果是空格就添加3个字符'%','2','0'分别到临时数组中,最后再把临时数组转化为字符串即可...举例解题思路方法一:栈;我们都知道栈是先进后出的,于是我们可以用方法一中分割单词的方式,在大的句子字符串中分割出一个一个地单词。...step 2:遍历栈,将栈中内容弹出拼接成字符串。方法二:两次反转;我们需要的是将单词位置反转,也即是单词内部不变,属于字符串部分反转问题。...如果将整个字符串反转,单词位置倒是反转了,但是内部次序也改变了,此时就需要将内部再反转回去,因此两次反转可以解决。step 1:将字符串整体反转。

    15720

    前端学数据结构与算法(四):理解递归及拿力扣链表题目练手

    函数调用栈 为了更好的理解递归,函数调用栈这个前提还是得先弄明白了,我们首先来看下这段程序`: function a() { b(); console.log('a') } function b...反转链表↓ 反转一个单链表 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 上一章使用循环,这次尝试使用递归解决。因为是链表,所以思路是改变指针的指向。...输入: 1->1->2 输出: 1->2 输入: 1->1->2->3->3 输出: 1->2->3 有了链表反转的技巧后,再解这个题目就很容易了,还是递归到底,因为我们知道倒数一个节点和倒数第二个节点...这个相对简单,再理解了反转后,使用之前的递归调试法去理解相信一点都不难,就不画图了。...环形链表↓ 给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。

    59200

    图解精选 TOP 面试题 005.1 | 反转链表之递归求解

    解题思路 在上一篇《图解精选 TOP 面试题 005 | 反转链表之迭代求解》中,我们介绍了该题的迭代求解法,本篇再说说如何进行递归求解。...除此之外,为了防止链表循环,我们还要切断当前节点的 next 指向,即设 head.next 为空。 何时结束 当节点为空或节点的 next 节点为空时,返回当前节点。...这样的结束条件我们可以理解为:空节点或只有一个节点时,它的反转就是其本身。 何时调用 在迭代法中,我们为了反转与遍历,不断地保存上一个节点与下一个节点,整个过程显得小心翼翼。...而在递归中,我们先根据链表原有的顺序利用递归将节点依次入栈,之后再层层弹出,从而反转节点之间的指向。...反转过程 具体实现 Python # Definition for singly-linked list. # class ListNode: # def __init__(self, x):

    57620

    数据结构与算法-(7)---栈的应用拓展-前缀表达式转换+求值

    我们首先将中缀表达式解析为一个tokenList列表,并反转该列表,这样我们就可以正向扫描这个列表。...左括号--从操作符栈opStack中弹出并返回顶部元素topToken,直到遇到右括号为止。期间,将所有弹出的操作符添加到前缀表达式列表prefixList中。...如果当前操作符的优先级小于等于栈顶操作符的优先级,我们就将栈顶操作符弹出并添加到前缀表达式列表prefixList中。...postfix_eval()函数接受一个前缀表达式,将其转换为后缀表达式并计算结果。 在计算过程中,它先将操作数入栈,然后遇到运算符就弹出栈顶的两个元素进行计算,并将计算结果重新入栈。...最终,栈中仅剩下一个元素,即表达式的计算结果。 doMath()函数用于执行基本的数学运算,包括加、减、乘、除。 程序的最后一行在调用doMath()函数,并输出结果。用于计算11乘以11的结果。

    21010

    《剑指 offer》刷题记录之:树 & 栈和队列

    而由于假定遍历结果中不包含重复的数字,所以我们可以根据根节点的值在中序遍历中确定其位置,从而得出左子树和右子树分别有多少个节点以及其对应的中序遍历。...迭代方法的本质是利用前序遍历和中序遍历的特点,通过循环的方式重建二叉树。...具体来说,我们往第一个栈中插入元素,如果栈中已有元素,则将其先全部弹出并压入到第二个栈中,再将新元素压入第一个栈,最后将第二个栈内的全部元素再弹出并压入到第一个栈中。...这样第一个栈中的元素存储顺序即为栈顶为最先插入的元素(可直接弹出),而栈底为最后插入的元素。这样删除元素时直接从第一个栈弹出即可(注意要维护元素个数,队列为空时返回 -1)。...插入元素时,直接向 stack1 中压入;删除元素时,当 stack2 为空时,我们将 stack1 中的元素逐个弹出并压入 stack2 中,再弹出 stack2 的栈顶元素;当 stack2 不为空时

    32610

    几道和「堆栈、队列」有关的面试算法题

    遍历输入字符串 如果当前字符为左半边括号时,则将其压入栈中 如果遇到右半边括号时,分类讨论: 1)如栈不为空且为对应的左半边括号,则取出栈顶元素,继续循环 2)若此时栈为空,则直接返回 false...一个元素进入 in 栈之后,出栈的顺序被反转。当元素要出栈时,需要先进入 out 栈,此时元素出栈顺序再一次被反转,因此出栈顺序就和最开始入栈顺序是相同的,先进入的元素先退出,这就是队列的顺序。...例如序列 1,2,3,4,5 是某栈的压入顺序,序列 4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。...出栈一个元素,则将出栈顺序向后移动一位,直到不相等,这样循环等压栈顺序遍历完成,如果辅助栈还不为空,说明弹出序列不是该栈的弹出顺序。...上面的几道题有一些是来自于《剑指offer》,本文提供的解题代码都是 Java 的,为了让更多的小伙伴能更加轻松的看懂文章,我专门制作了一个小程序 「图解剑指offer」,里面目前配备了 Java,C++,Python

    88740

    几道和「堆栈、队列」有关的面试算法题

    遍历输入字符串 如果当前字符为左半边括号时,则将其压入栈中 如果遇到右半边括号时,分类讨论: 1)如栈不为空且为对应的左半边括号,则取出栈顶元素,继续循环 2)若此时栈为空,则直接返回 false...一个元素进入 in 栈之后,出栈的顺序被反转。当元素要出栈时,需要先进入 out 栈,此时元素出栈顺序再一次被反转,因此出栈顺序就和最开始入栈顺序是相同的,先进入的元素先退出,这就是队列的顺序。...例如序列 1,2,3,4,5 是某栈的压入顺序,序列 4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。...出栈一个元素,则将出栈顺序向后移动一位,直到不相等,这样循环等压栈顺序遍历完成,如果辅助栈还不为空,说明弹出序列不是该栈的弹出顺序。...上面的几道题有一些是来自于《剑指offer》,本文提供的解题代码都是 Java 的,为了让更多的小伙伴能更加轻松的看懂文章,我专门制作了一个小程序 「图解剑指offer」,里面目前配备了 Java,C++,Python

    38130

    递归的递归之书:引言到第四章

    第一步将平方或乘以“a”的操作推送到“opStack”变量中的堆栈。在第二步中,它在弹出堆栈时执行这些操作。...在使用and或&&布尔运算符连接的表达式中,如果左侧表达式为False,则右侧表达式是True还是False都无所谓,因为整个表达式都将是False。...例如,在创建树数据结构的副本时使用先序遍历,因为您需要在副本树中创建子节点之前创建父节点。...: A B D C E G H F 当您查看图 4-1 中的树时,请注意先序遍历顺序在显示右节点之前显示左节点,并且在显示顶部节点之前显示底部节点。...findStart()函数接受这个数据结构并返回S起点的 x,y 坐标。随意编辑迷宫字符串——但请记住,为了使解决算法起作用,迷宫不能有任何循环。 递归算法在solveMaze()函数中。

    64210

    剑指Offer题解 - Day02

    解析:我们先正序遍历链表,同时将链表的值存入数组中。直到链表为空则停止遍历。最后将数组进行倒置后返回,则是最终结果。...思路:依次将链表节点放入辅助栈(数组)中。然后将辅助栈的元素依次弹出并存入数组后返回。 /** * Definition for singly-linked list....head = head.next; } while(stack.length) { result.push(stack.pop()) // 依次将辅助栈内的元素弹出并存入结果数组中...反转链表」 力扣题目链接[2] 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。...临时变量也在交换变量时进行使用,此处同理。核心思路就是先暂存当前节点的next 指向,然后改变next指向为pre,然后将pre和cur后移一位。

    23710

    关于“Python”的核心知识点整理大全5

    使用方法pop()删除元素 有时候,你要将元素从列表中删除,并接着使用它的值。...方法pop()可删除列表末尾的元素,并让你能够接着使用它。术语弹出(pop)源自这样的类 比:列表就像一个栈,而删除列表末尾的元素相当于弹出栈顶元素。...弹出列表中任何位置处的元素 实际上,你可以使用pop()来删除列表中任何位置的元素,只需在括号中指定要删除的元素 的索引即可。...在1处定义列表后,我们将值'ducati'存储在变量too_expensive中(见2)。接下来,我们 使用这个变量来告诉Python将哪个值从列表中删除(见3)。...有些人从1开始数,因此以为第三个元素的 索引为3;但在Python中,第三个元素的索引为2,因为索引是从0开始的。 索引错误意味着Python无法理解你指定的索引。

    16110

    python学习第六讲,python中的数据类型,列表,元祖,字典,之列表使用与介绍

    目录 python学习第六讲,python中的数据类型,列表,元祖,字典,之列表使用与介绍....二丶列表,其它语言称为数组 1.列表的定义,以及语法 2.列表的使用,以及常用方法. 3.列表的常用操作 4.关键字,函数,方法的区别. 5.列表的循环遍历 python学习第六讲,python中的数据类型..., 分隔 列表的 索引 从 0 开始 索引 就是数据在 列表 中的位置编号,索引 又可以被称为 下标 注意:从列表中取值时,如果 超出索引范围,程序会报错 name_list = ["zhangsan...增改: print(name[0]); 取出第一个元素的值 print(name.index("xxx")); 获取某元素在列表中的索引 name[1] = "xxxx"; 修改列表中的元素....在C/C++ 中 或者 java中,都称为增强for循环. java中则是 for each.

    2.4K40

    Python 图形化界面基础篇:使用弹出窗口和对话框

    Python 图形化界面基础篇:使用弹出窗口和对话框 引言 在开发图形用户界面( GUI )应用程序时,与用户进行交互的一种常见方式是通过弹出窗口和对话框。...在本篇博客中,我们将深入探讨如何使用这些功能来增强你的 GUI 应用程序。 弹出窗口和对话框的用途 弹出窗口和对话框在 GUI 应用程序中有多种用途,包括但不限于: 1 ....使用 Tkinter 创建弹出窗口 Tkinter 是 Python 的标准 GUI 库,它提供了创建和管理弹出窗口的方法。我们将从创建一个简单的弹出窗口开始,并逐步介绍更多复杂的示例。...结论 弹出窗口和对话框是 GUI 应用程序中与用户交互的重要组成部分。无论是获取用户输入、显示信息还是进行操作确认,你都可以使用 Tkinter 和其他第三方库来轻松创建各种类型的对话框。...希望这个博客能帮助你更好地使用弹出窗口和对话框来改进你的 Python GUI 应用程序。

    2.1K20

    【CPP】栈,后缀表达式与计算

    栈(stack),一种先进后出的数据结构,即一种插入和删除都在统一端的线性表,在现实生活中类似于垒盘子,我们最后放上的盘子将会在最早被拿出来。...然后,在扫描表达式时,有一下规则: 若扫描到数字,直接压入目标栈中。...若目标操作符优先级高于操作符栈栈顶操作符,则直接压入操作符栈 若目标操作符优先级低于于操作符栈栈顶操作符,则先弹出操作符栈栈顶的操作符并将其压入目标栈,然后再进行一次比较直到结束。...=0时,让flag变成1,且当flag==1时,先将目标栈顶的数字*10,然后加上现在扫描到的数字,然后重新压入栈中。...这是更简单的操作,方法就是先将刚才的后缀表达式栈反转(代替从1开始扫描),然后一个个数据弹出,由于每两个数字必然匹配一个操作符,当扫描到数字时,压入一个数字栈中,然后每当扫描到操作符,弹出数字栈顶的两个数字

    1K20
    领券