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

Python 版 LeetCode 刷题笔记 #5 无重复字符的最长子串(下)

今天接着研究这个第五题,先回顾下题目: 题目 第 5 题 无重复字符的最长子串: 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。...示例: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 输入: "cbbd" 输出: "bb" 思路 昨天我以为自己尝试的方法属于暴力穷举,现在想来算不上。...真正的暴力穷举应该是将该字符串所有的子串找出来,检测是否是回文,并将最长的回文子串返回。 我昨天的思路呢,是以该字符串的每个字符为子串中心,向左向右两侧检测直到不匹配,这应该算“中心扩散法”。...的回文中心的索引值 center = 0 # 当前遍历的中心最大扩散步数,其值等于原始字符串的最长回文子串的长度 max_len = 1...: 中文区结果: 执行用时 :88 ms, 在所有 Python3 提交中击败了97.01%的用户 内存消耗 :13.7 MB, 在所有 Python3 提交中击败了9.26%的用户 英文版结果: Runtime

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

    2.Python3扩展知识之笔试操作总结(二)

    def myFun(x,a) return x[0] * x[1] - a[0] * b[1] 使用关键字参数,可以有效避免什么问题的出现呢?...答:例如汉诺塔,目录索引(因为你永远不知道这个目录里边是否还有目录),快速排序(二十世纪十大算法之一),树结构的定义等如果使用递归,会事半功倍,否则会导致程序无法实现或相当难以理解。...sum()BIF有个缺陷,就是如果参数里有字符串类型的话就会报错,写出一个新的实现过程自动“无视”参数里的字符串并返回正确的计算结果? #!...,判断传入的字符串参数是否为“回文联”(回文联即用回文形式写成的对联,既可顺读,也可倒读。...os.sep是程序更标准 ################ 执行案例 ################### # 该文件夹下共有类型为【文件夹】的文件 3 个 # 该文件夹下共有类型为【.py】的文件

    67230

    Python 版 LeetCode 刷题笔记 #5 无重复字符的最长子串(上)

    题目 中文题目 第 5 题 无重复字符的最长子串: 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。...示例: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。...比如 "abbcccbba" 中,我要把最中心的 "ccc" 坐标拿到,这样向左、向右来逐个字符检测,直到到头、或者两边字符不匹配。...我是对每个字符遍历,先判断该字符后续有无连续出现相同字符,如果有的话把重复出现的字符合并,然后假定该字符为回文中心点,向左向右检测是否相同来生成以该字符为中心的最长回文串,最终来返回最长的结果。...中文区结果: 执行用时 :9856 ms ms, 在所有 Python3 提交中击败了5.04%的用户 内存消耗 :14.2 MB, 在所有 Python3 提交中击败了15.00%的用户 英文版结果:

    45320

    Leetcode【60、79、93、131、842】

    在回溯函数中,对于每个字符的上下左右四个位置进行深搜(要保证不越界),如果 board 的下一个位置的字符匹配 word 的下一个字符,则修改 board 中当前字符为 "" 进行递归调用。...一个子串是否是回文串可以使用 s == s[::-1] 来判断。...if st == st[::-1] and a[:j] + [st] not in ans: # 判断新的子串是否是回文串,且构成的回文串前缀是否之前出现过...使用回溯法的解题思路是对于字符串 s 的前缀进行划分,然后判断前缀是否是回文子串。如果是,形成临时结果,将 s 的后半部分和临时结果传入到下一层(深搜);如果不是,那就继续划分下一个前缀。...检查了一下发现没什么问题啊?

    68230

    视频分享:一道回文串的题目:什么情况下用递归,如何用递归 #LeetCode #数据结构与算法

    题目:给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。...对于字符串 "aabb" ,我们直接使用类似“枚举的思想”,对每个字符串中每个字符后进行一次分割: a|abb aa|bb aab|b aabb| 接着检查前半部分是否为回文,如果为回文,则对其后半部分再次进行分割...,以a|abb为例,其中a为回文,则对abb进行分割: a|bb ab|b abb| 以此类推,如果能够抵达最后一个字符,则返回该数组,将其加入用于返回的数组集。...这正好是递归过程,使用递归的方法进行解决。...python3默认跑在64位机器上,此时,其int类型是64位的(这与c/c++, java等大不同,造成了麻烦),别忘了限制其范围在32位中: 对于递归函数:递归函数要把停止条件写在开头;递归在什么时候用呢

    51020

    【算法】双指针算法 ( 双指针算法分类 | 相向双指针 | 有效回文串 )

    文章目录 一、双指针算法分类 二、相向双指针示例 ( 有效回文串 ) 一、双指针算法分类 ---- 面试时经常遇到 限制算法复杂度为 O ( n ) 的情况 , 就需要使用以下算法 : 双指针算法...: 设置两个指针 ( 索引 ) , 进行不同方式的遍历 , 使用最高频的算法 ; 打擂台算法 : 设置一个擂主值 , 设置为无穷大或无穷小 , 通过遍历让该擂主值与遍历值打擂台 ; 求最大值最小值常用...; 单调栈算法 ; 单调队列算法 ; 双指针算法分类 : 相向双指针 : 判断一个字符串是否是回文串 , 从两边向中心遍历 ; 背向双指针 : 查找一个字符串的最长回文子串使用的 " 中心线枚举算法 "...另外一部分不满足某条件 ; 二、相向双指针示例 ( 有效回文串 ) ---- 有效回文串 : https://www.lintcode.com/problem/415/ 如果是不忽略大小写 , 特殊字符的情况...; 代码示例 : public class Solution { /** * @param s: 一个字符串 * @return: 该字符串是否有有效回文串 */

    2.4K10

    线性结构 队列与栈

    栈的操作 方法 操作 push 添加新元素到栈顶 pop 移除并返回栈顶元素 peek 返回栈顶元素 size 返回栈大小 clear 移除栈内所有元素 isEmpty 判断栈是否为空 Python实现栈...回文检索 回文是指一种现象,一个单词、短语或数字,从前往后和从后往前都是一样的。...# 单词 dad racecar # 数字 1001 使用栈,可以轻松判断一个字符串是否是回文。将字符串的每个字符按顺序亚入栈。当字符串中的字符都入栈后,栈内就保存了一个反转后的字符串。...(5+6)*(7+8)/(4+3) # 括号匹配 (2+3)+24/12+(4-2 # 括号不匹配 栈可以用来判断一个表达式中的括号是否匹配。从空栈开始,从左到右处理表达式。...如果任何时候栈上没有出现符合开始符号的结束符号,则字符串不匹配。最后,当所有符号都被处理后,栈应该是空的。

    39520

    Python大牛私藏的20个python代码,短小精悍,用处无穷

    2.判断字符串是否是回文 ? 该例也可以看作是第一例的应用,利用字符串的翻转来判断字符是否是回文字符串。 3.单词大小写 ?...字符串的拆分可以直接利用split函数,进行实现,返回的是列表,而strip函数用于移除字符串头尾指定的字符(默认为空格或换行符)。 5.将列表中的字符串合并 ?...12.判断字符串所含元素是否相同 ? Counter函数还可以用来判断字符串中包含的元素是否相同,无论字符串中元素顺序如何,只要包含相同的元素和数量,就认为其是相同的。...使用random.sample()函数,可以从一个序列中选择n_samples个随机且独立的元素。 20.检查唯一性 ?...通过检查列表长度是否与set后的列表长度一致,来判断列表中的元素是否是独一无二的。 ---- 这20个短小精悍的小例子还是非常实用的,尤其是对菜鸟来说,多练习一下对功力提升大有裨益!

    1.2K20

    Python os 模块常用函数

    name为检索的系统配置的值,它也许是一个定义系统值的字符串,这些名字在很多标准中指定(POSIX.1, Unix 95, Unix 98, 和其它)。...在unix,Windows中有效 30 os.lstat(path)像stat(),但是没有软链接 31 os.major(device)从原始的设备号中提取设备major号码 (使用stat中的st_dev...返回一个打开的模式为(w+b)的文件对象 .这文件对象没有文件夹入口,没有文件描述符,将会自动删除。 58 os.tmpnam()Python3 中已删除。.../文件名之前的路径名 68 os.path.exists(path)路径(目录或文件)是否存在,返回布尔型 69 os.path.getatime(filename)返回文件最后访问时间的时间戳 70...(filename)返回文件的大小,以byte为单位 73 os.path.isabs(s)路径名是否是绝对路径 74 os.path.isdir(path)路径名是否是目录(文件夹) 75 os.path.isfile

    65220

    LeetCode 刷题笔记 #9 回文数

    今天有些累、但碰巧遇到的是个简单难度的小题,尝试下一行代码来解决。 题目 第 9 题 回文数: 判断一个整数是否是回文数。...回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数 示例: 输入: 121 输出: true 输入: -121 输出: false 解释: 从左向右读, 为 -121 。...从右向左读, 为 121- 。因此它不是一个回文数。 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 进阶: 你能不将整数转为字符串来解决这个问题吗?...思路 Python 字符串真的是挺好用一工具,针对这个题目,我们先把整数转化为字符串,再将字符串翻转一遍,比较是否相等,任务完成。...表现是没之前那么好,因为我又引入了列表来检测是否符合回文特点,同时这个也是随手写的,应该还是有很大优化空间的。

    37310

    看完这篇文章我知道至少85%的人是没有入门Python的!花两周整理

    勾选了你装完就不用自己去配置环境变量,安装完毕后打开CMD输入:python3 -V 能查看到安装的Python版本说明安装成功,如果提示错误:python3不是内部或外部命令之类的话,恭喜你可以百度下...sqrt(x)返回数字x的平方根,数字可以为负数,返回类型为实数,如math.sqrt(4)返回 2+0j 5) 元组(tuple)受限的列表,元组中的元素不能修改,使用小括号()表示。...='strict')以encoding指定的编码格式对字符串进行编码endswith(sub[,start[,end]])检查字符串是否以sub 子字符串结束,如果是返回True,否则返回False。...,比如: ''.join(['Hello','Python'])ljust(width)返回一个左对齐的字符串,并使用空格填充至长度为width的新字符串lower()转换字符串所有大写字符为小写lstrip...keepends行startswith(prefix[,start[,end]])检查字符串是否以prefix开头,是则返回True,否则返回False。

    1.4K70

    Python3文件操作

    打印到屏幕 产生输出的最简单方法是使用print语句,可以通过用逗号分隔零个或多个表达式。这个函数传递表达式转换为一个字符串,如下结果写到标准输出 - #!...但在Python3中,raw_input()函数已被弃用。此外, input() 函数是从键盘作为字符串读取数据,不论是否使用引号(''或“”)与否。...文件指针是在文件是否存在该文件的末尾。也就是说,文件是在追加模式。 如果该文件不存在,它会创建一个用于写入的新文件。 a+ 打开文件为追加和读取方式。文件指针是在文件是否存在该文件的末尾。...write()方法不添加换行符('\n')到字符串的结尾- 语法 fileObject.write(string); 这里,传递的参数是要写入到打开的文件的内容。 示例 #!...如果 from 被设置为0,这意味着使用该文件的开头作为基准位置,以及如果设置为1,则使用当前位置作为基准位置,如果它被设置为2,则该文件的结束将被作为基准位置。

    68810

    Java字符串面试问答

    我们可以使用intern()方法将字符串对象存储到字符串池中,或者如果池中已经存在具有特定值的String,则返回引用。 编写一种方法来检查输入的String是否为回文?...因此,我们可以控制它在内存中的可用时间,从而避免String带来的安全威胁。 您如何检查Java中两个字符串是否相等? 有两种检查两个字符串是否相等的方法–使用“ ==”运算符或使用equals方法。...当我们使用“ ==”运算符时,它会检查String的值以及引用,但是在我们的编程中,大多数时候我们只检查String的相等性是否为value。...如果查看String类中的equals方法实现,则会发现使用instanceof运算符进行检查以检查传递的对象的类型是否为String?如果不是,则返回false。...在这里,字符串池中的“Hello”字符串被重用。 我希望这里列出的问题对你的Java面试有所帮助。 -------------- “不积跬步,无以至千里”,希望未来的你能:有梦为马 随处可栖!

    1.2K50

    使用Java 这几个常用工具类库,助你告别996,建议收藏!

    不trim并判断) equals:字符串是否相等 join:合并数组为单一字符串,可传分隔符 split:分割字符串 EMPTY:返回空字符串 trimToNull:trim后为空字符串则转换为null...(trim后判断) isEmpty:字符串是否为空 (不trim并判断) equals:字符串是否相等 join:合并数组为单一字符串,可传分隔符 split:分割字符串 EMPTY:返回空字符串 replace...:替换字符串 capitalize:首字符大写 6 Apache 相关FilenameUtils getExtension:返回文件后缀名 getBaseName:返回文件名,不包含后缀名 getName...toObject:基础类型数据数组转换为对应的Object数组 9 Apache 相关的CollectionUtils isEmpty:是否为空 select:根据条件筛选集合元素 transform...:获取所有属性描述器 isWriteable:检查属性是否可写 getPropertyType:获取对象属性类型 11 Apache相关的StringEscapeUtils unescapeHtml4:

    1.4K00

    小米场景题,让我措手不及...

    安全审计与代码审查: 定期进行安全审计和代码审查,检查潜在的安全漏洞和问题。 使用专业的安全工具和第三方审计服务来加强后端接口的安全性。 2.接口安全性知道不?...,用于找到最长回文子串: 创建一个长度为n的布尔数组dp,其中dp[i]表示字符串s的前i个字符是否是回文串。...对于每个长度为2的子串,检查它们是否是回文串,如果是,则将dp[i]设置为true。 对于每个长度大于2的子串,检查其前缀和后缀是否相等,如果相等,则将dp[i]设置为true。...} } return sb.toString(); } } 使用动态规划的思想,通过遍历字符串s中的所有子串,判断是否为回文串,并记录最长的回文子串的长度和起始位置...具体实现中,使用一个一维数组start来记录最长回文子串的起始位置,使用一个一维布尔数组flag来标记最长回文子串是否存在。算法的时间复杂度为O(n^2),空间复杂度为O(n)。

    20410

    告别996,Java 这几个常用工具类库,建议收藏!

    不trim并判断) equals:字符串是否相等 join:合并数组为单一字符串,可传分隔符 split:分割字符串 EMPTY:返回空字符串 trimToNull:trim后为空字符串则转换为null...(trim后判断) isEmpty:字符串是否为空 (不trim并判断) equals:字符串是否相等 join:合并数组为单一字符串,可传分隔符 split:分割字符串 EMPTY:返回空字符串 replace...:替换字符串 capitalize:首字符大写 6 Apache 相关FilenameUtils getExtension:返回文件后缀名 getBaseName:返回文件名,不包含后缀名 getName...toObject:基础类型数据数组转换为对应的Object数组 9 Apache 相关的CollectionUtils isEmpty:是否为空 select:根据条件筛选集合元素 transform...:获取所有属性描述器 isWriteable:检查属性是否可写 getPropertyType:获取对象属性类型 11 Apache相关的StringEscapeUtils unescapeHtml4:

    1.1K20

    简单实用:isPalindrome方法在密码验证中的应用

    在实际的密码策略中,我们可能会使用到回文判断算法的isPalindrome方法来判断用户输入的密码是否为回文字符串。...= null) { // 检查字符串是否为空 throw new IllegalArgumentException("Input string cannot be null");...关于回文判断算法的isPalindrome方法,值得注意的是,isPalindrome方法只能判断一个字符串是否为回文字符串,而不能判断一个字符串是否包含回文字符串。...如果需要判断一个字符串是否包含回文字符串,可以使用其他算法或方法来实现。此外,在实现回文判断算法时需要注意一些细节问题。例如,如果输入的字符串中包含空格或其他特殊字符,需要对这些字符进行处理或过滤。...另外,如果输入的字符串非常长,需要使用高效的算法或数据结构来进行判断,以避免时间复杂度过高的问题。总之,回文判断算法的isPalindrome方法是一种简单而实用的算法,可以用于密码验证等场景中。

    15710

    【C++经典例题】回文串判断:两种高效解法剖析

    一、问题描述 在字符串处理中,判断一个字符串是否为回文串是一个经典问题。...使用迭代器 left 遍历原字符串 s,当遇到数字('0' 到 '9')或小写字母('a' 到 'z')时,直接添加到 tmp 中;当遇到大写字母('A' 到 'Z')时,将其 ASCII 码值加 32...处理空字符串情况:如果 tmp 为空字符串,根据题目定义,空字符串是回文串,直接返回 true。...三、解法二:直接原地筛选判断 思路 这种方法不创建新的字符串,而是直接在原字符串上使用双指针法进行筛选和判断。...总结 两种解法都能有效解决回文串判断问题: 解法一逻辑清晰,易于理解,但需要额外的空间存储处理后的字符串; 解法二原地操作,空间复杂度更低,更适合处理大规模数据。

    12710
    领券