Leetcode 1156. Swap For Longest Repeated Character Substring [Python]

2023-12-22 21:32

本文主要是介绍Leetcode 1156. Swap For Longest Repeated Character Substring [Python],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

交换一个字母,组成最长重复Substring。如果把字母按照重复段拆开成多个Substring(aaabbccaa--> aaa,bb,cc,aa),以每个Substring为对象思考,则最长的Substring就是其后(或前)增加一个相同的字母,并从中找最长的。但是每个字母在原String中的数量有限,所以用Counter记录这个上限,在对每个Substring的添加一个相同字母的时候不可超过这个上限。另外,如aaabaaaca,aaabaaa这样形式的,两个相同字母的Substriing被一个字母隔开,则可以尝试用外部字母和中间字母交换,如aaabaaaca的最后一个a和b交换。如果么有外部的相同字母,则只能把中间字母和两头的Substring的字母交换。同样也可以用Counter来做限制,看是否有其他相同与两端Substring的字母。

class Solution:def maxRepOpt1(self, text: str) -> int:char_Counter = collections.Counter(text)repeating = []i = 0while i < len(text) :curchar = text[i]cunt = 1while i+1 < len(text) and text[i+1] == text[i]:cunt += 1i += 1repeating.append((curchar, cunt))i += 1res = float('-inf')for char_and_num in repeating:curchar, number = char_and_num[0], char_and_num[1]res = max(res, min(number+1, char_Counter[curchar])) #Switch one letter to follow a repeating group, obtain the longest substringfor i in range(1, len(repeating)-1):prevchar = repeating[i-1][0]prevchar_num = repeating[i-1][1]nextchar = repeating[i+1][0]nextchar_num = repeating[i+1][1]curchar = repeating[i][0]curchar_num = repeating[i][1]if prevchar == nextchar and curchar_num == 1:#if two same char repeating group are with the same char, and be devided by only one different letter, try to switch the middle char to form the longest repeating substring from the outside char or the char within the repeating groups. res = max(res, min(prevchar_num+nextchar_num+1, char_Counter[nextchar]))return res

 

这篇关于Leetcode 1156. Swap For Longest Repeated Character Substring [Python]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/525546

相关文章

哈希leetcode-1

目录 1前言 2.例题  2.1两数之和 2.2判断是否互为字符重排 2.3存在重复元素1 2.4存在重复元素2 2.5字母异位词分组 1前言 哈希表主要是适合于快速查找某个元素(O(1)) 当我们要频繁的查找某个元素,第一哈希表O(1),第二,二分O(log n) 一般可以分为语言自带的容器哈希和用数组模拟的简易哈希。 最简单的比如数组模拟字符存储,只要开26个c

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

nudepy,一个有趣的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个有趣的 Python 库 - nudepy。 Github地址:https://github.com/hhatto/nude.py 在图像处理和计算机视觉应用中,检测图像中的不适当内容(例如裸露图像)是一个重要的任务。nudepy 是一个基于 Python 的库,专门用于检测图像中的不适当内容。该

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

leetcode-24Swap Nodes in Pairs

带头结点。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; }* }*/public class Solution {public ListNode swapPairs(L

leetcode-23Merge k Sorted Lists

带头结点。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; }* }*/public class Solution {public ListNode mergeKLists