【数据结构与算法】之字符串系列-20240118

在这里插入图片描述


这里写目录标题

  • 一、13. 罗马数字转整数
  • 二、14. 最长公共前缀
  • 三、20. 有效的括号
  • 四、28. 找出字符串中第一个匹配项的下标
  • 五、58. 最后一个单词的长度

一、13. 罗马数字转整数

简单
在这里插入图片描述
示例 1:

输入: s = “III”
输出: 3
示例 2:

输入: s = “IV”
输出: 4
示例 3:

输入: s = “IX”
输出: 9
示例 4:

输入: s = “LVIII”
输出: 58
解释: L = 50, V= 5, III = 3.
示例 5:

输入: s = “MCMXCIV”
输出: 1994
解释: M = 1000, CM = 900, XC = 90, IV = 4.

from collections import Counter, defaultdictclass Solution:def romanToInt(self, s):dic = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}i = 0res = 0  # -1         4while i < len(s) - 1:if dic[s[i]] < dic[s[i + 1]]:res = res - dic[s[i]]  # -1else:res = res + dic[s[i]]  # 0+ 50 =50+5+1+1+1i += 1return res + dic[s[-1]]  #s = Solution()
strs = "LVIII"
print(s.romanToInt(strs))

二、14. 最长公共前缀

简单
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。

示例 1:
输入:strs = [“flower”,“flow”,“flight”]
输出:“fl”
示例 2:
输入:strs = [“dog”,“racecar”,“car”]
输出:“”
解释:输入不存在公共前缀。

class Solution:def func(self, strs):n = ''s = list(zip(*strs))for item in s:if len(set(item)) == 1:n += item[0]return nss = Solution()
strs = ["flower", "flow", "flight"]
print(ss.func(strs))

三、20. 有效的括号

简单
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。

示例 1:
输入:s = “()”
输出:true

示例 2:
输入:s = “()[]{}”
输出:true

示例 3:
输入:s = “(]”
输出:false

class Solution:def func1(self, strs):d = {"(": ")", "{": "}", "[": "]"}t = ['?']for i in strs:if i in d:t.append(i)elif d[t.pop()] != i:return Falsereturn len(t) == 1ss = Solution()
s = "()"
print(ss.func1(s))

四、28. 找出字符串中第一个匹配项的下标

简单
给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。

示例 1:
输入:haystack = “sadbutsad”, needle = “sad”
输出:0
解释:“sad” 在下标 0 和 6 处匹配。
第一个匹配项的下标是 0 ,所以返回 0 。

示例 2:
输入:haystack = “leetcode”, needle = “leeto”
输出:-1
解释:“leeto” 没有在 “leetcode” 中出现,所以返回 -1 。

class Solution:def func(self, haystack, needle):s = haystack.split(needle)if len(s) == 1:return -1else:return len(s[0])ss = Solution()
haystack = "leetcode"
needle = "leeto"
print(ss.func(haystack, needle))

五、58. 最后一个单词的长度

简单
给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。
单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。

示例 1:
输入:s = “Hello World”
输出:5
解释:最后一个单词是“World”,长度为5。
示例 2:
输入:s = " fly me to the moon "
输出:4
解释:最后一个单词是“moon”,长度为4。
示例 3:
输入:s = “luffy is still joyboy”
输出:6
解释:最后一个单词是长度为6的“joyboy”。

s = "Hello World"
print(len(s.split()[-1]))

特别注意:s.split()默认按照空格进行拆分


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/414100.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年甘肃省职业院校技能大赛信息安全管理与评估 样题三 模块一

竞赛需要完成三个阶段的任务&#xff0c;分别完成三个模块&#xff0c;总分共计 1000分。三个模块内容和分值分别是&#xff1a; 1.第一阶段&#xff1a;模块一 网络平台搭建与设备安全防护&#xff08;180 分钟&#xff0c;300 分&#xff09;。 2.第二阶段&#xff1a;模块二…

百度云网盘下载速度如何提升到正常速度

引入问题 我们在下载代码学习资料的时候大多数都是百度云网盘&#xff0c;但是限速&#xff01;下载的十分的慢&#xff0c;有什么办法能让我们不开通会员就能享受正常速度呢&#xff1f; 当然有&#xff01; 解决百度云网盘下载速度过慢&#xff0c;提高到正常速度 点击右…

(2)(2.1) Andruav Android Cellular(一)

文章目录 前言 1 Andruav 是什么&#xff1f; 2 Andruav入门 3 Andruav FPV 4 Andruav GCS App​​​​​​​ 前言 Andruav 是一个基于安卓的互联系统&#xff0c;它将安卓手机作为公司计算机&#xff0c;为你的无人机和遥控车增添先进功能。 1 Andruav 是什么&#xff…

VUE--组件的生命周期及其基本应用

VUE的生命周期 上图是实例生命周期的图表&#xff0c;需要注意以下几个重要时期&#xff1a; 创建期&#xff1a;beforeCreated、created 挂载期&#xff1a;beforeMount、mounted 更新期&#xff1a;beforeUpdate、updated 销毁期&#xff1a;beforeUnmount、unmounted 生命周…

基于Java+SpringBoot+Vue狗粮销售商城系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行交流合作✌ 主要内容&#xff1a;SpringBoot、Vue、SSM、HLM…

如何发挥 Sketch在UI和UX设计中的作用

Sketch是一款专业的矢量图形设计软件&#xff0c;主要应用于UI设计、移动应用设计、Web设计等领域。假如你是一个交互设计师或UI设计师&#xff0c;那么你一定知道Sketch这一强大的矢量设计软件&#xff1b;如果你使用了Photoshop&#xff0c;那么在你接触到Sketch之后&#xf…

Linux环境搭建FastDFS文件服务器(附带Nginx安装)

本文主要介绍在linux服务器如何搭建FastDFS文件服务器。大概分为9个步骤&#xff0c;由于内容较为繁琐。下面带你入坑&#xff01; 首先简单介绍一下FastDFS是淘宝资深架构师余庆老师主导开源的一个分布式文件系统&#xff0c;用C语言编写。适应与中小企业&#xff0c;对文件不…

快速排序【hoare版本】【挖坑法】【双指针法】(数据结构)

快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法&#xff0c;其基本思想为&#xff1a;任取待排序元素序列中 的某元素作为基准值&#xff0c;按照该排序码将待排序集合分割成两子序列&#xff0c;左子序列中所有元素均小于基准值&#xff0c;右子序列中所有元素均…

android 和 opencv 开发环境搭建

本文详细说明给android项目添加opencv库的详细步骤&#xff0c;并通过实现图片灰度化来查看配置是否成功。 下载OPENCV ANDROID SDK 到官网下载 打开 https://opencv.org/releases/ 选择android&#xff0c;下载完成后解压出下面的文件&#xff1a; 安装android sdk 和 ndk …

Dubbo使用详解

简介 Dubbo是一个高性能、轻量级的开源Java RPC框架&#xff0c;由阿里巴巴公司开发并开源。它提供了三大核心能力&#xff1a;面向接口的远程方法调用&#xff0c;智能容错和负载均衡&#xff0c;以及服务自动注册和发现。Dubbo使得应用可通过高性能的 RPC 实现服务的输出和输…

Redis相关命令详解及其原理

Redis概念 Redis&#xff0c;英文全称是remote dictionary service&#xff0c;也就是远程字典服务。这是kv存储数据库。Redis&#xff0c;包括所有的数据库&#xff0c;都是请求-回应模式&#xff0c;通俗来说就是数据库不会主动地要给前台推送数据&#xff0c;只有前台发送了…

Java研学-Maven基础

一 概述 Maven是一个跨平台的项目管理工具&#xff0c;主要用于基于 Java 平台的项目&#xff08;Maven 底层为Java&#xff09;构建、依赖包管理和项目信息管理&#xff0c;只需要运行一条简单的命令&#xff0c;就能高效的完成构建动作   Maven 能提供一种项目的依赖配置&a…