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

在这里插入图片描述

字符串系列

  • 一、520. 检测大写字母
  • 二、面试题 01.01. 判定字符是否唯一
  • 三、面试题 01.02. 判定是否互为字符重排
  • 四、面试题 01.03. URL化
  • 五、面试题 01.04. 回文排列
  • 六、面试题 01.09. 字符串轮转

一、520. 检测大写字母

简单
我们定义,在以下情况时,单词的大写用法是正确的:
全部字母都是大写,比如 “USA” 。
单词中所有字母都不是大写,比如 “leetcode” 。
如果单词不只含有一个字母,只有首字母大写, 比如 “Google” 。
给你一个字符串 word 。如果大写用法正确,返回 true ;否则,返回 false 。

示例 1:
输入:word = “USA”
输出:true

示例 2:
输入:word = “FlaG”
输出:false

根据题目要求,若单词的大写用法正确,则需要满足:

若第 1 个字母为大写,则其他字母必须均为大写或均为小写,即其他字母必须与第 2 个字母的大小写相同;
若第 1 个字母为小写,则其他字母必须均为小写。

istitle() 方法用于检查字符串是否符合标题文本的格式,即每个单词的首字母都是大写字母,其余字母都是小写字母或不是字母。如果字符串符合标题文本格式,则返回 True,否则返回 False。

def func520(word):
    return word.isupper() or word.islower() or word.istitle()

word = "FlaG"
print(func520(word))

二、面试题 01.01. 判定字符是否唯一

简单
实现一个算法,确定一个字符串 s 的所有字符是否全都不同。

示例 1:
输入: s = “leetcode”
输出: false

示例 2:
输入: s = “abc”
输出: true

思路:通过set方法得到的集合的长度与s的长度进行对

def func0101(s):
    return len(set(s)) == len(s)

s = "abc"
print(func0101(s))

三、面试题 01.02. 判定是否互为字符重排

简单
给定两个由小写字母组成的字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。

示例 1:
输入: s1 = “abc”, s2 = “bca”
输出: true

示例 2:
输入: s1 = “abc”, s2 = “bad”
输出: false

思路:如果字符串s1和s2的字符个数一样,则可以重新排列变成另一个字符串

def func0102(s1, s2):
    ss1 = Counter(s1)
    ss2 = Counter(s2)
    if ss1 == ss2:
        return True
    return False


s1 = "abc"
s2 = "bad"
res = func0102(s1, s2)
print(res)

四、面试题 01.03. URL化

简单
提示
URL化。编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作。)

示例 1:
输入:"Mr John Smith ", 13
输出:"Mr%20John%20Smith"

示例 2:
输入:" ", 5
输出:"%20%20%20%20%20"

def fun1(s):
    s1=s[:13].replace(' ','%20')
    return s1
s="Mr John Smith    "
res=fun1(s)
print(res)

五、面试题 01.04. 回文排列

简单
提示
给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。
回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。回文串不一定是字典当中的单词。

示例1:
输入:“tactcoa”
输出:true(排列有"tacocat"、“atcocta”,等等)
思路:如果字符串中的字符为奇数个,并且超过1个,则为False

def func0104(s):
    res = Counter(s)
    odd = 0
    for val in res.values():
        if val % 2 == 1:
            odd += 1
            if odd > 1:
                return False
    return True

s = "tactcoa"
r = func0104(s)
print(r)

六、面试题 01.09. 字符串轮转

简单
提示
字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。
示例1:
输入:s1 = “waterbottle”, s2 = “erbottlewat”
输出:True

示例2:
输入:s1 = “aa”, s2 = “aba”
输出:False
思路:如果字符串A经过多次旋转之后得到字符串B,那么字符串A拼接后再去掉首尾各一位后一定包含字符串B

def func0109(s1, s2):
    return s2 in (s1 + s1)[1:-1]


s1 = "aa"
s2 = "aba"
print(func0109(s1, s2))

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

分布式应用程序设计项目管理

1. 项目的定义 项目是一种特定的、新颖的行动,目的是以有条不紊、逐步的方式构建一个尚未存在确切对应物的未来现实。它是对精心制定的需求的回应,旨在满足业主的需要。项目包括一个可能是物理或智力的目标,并且需要使用给定的资源来执行一系…

【SD】sadtalk

下载地址: 123:https://www.123pan.com/s/VzULVv-0OXX.html 提取码:3KhD 百度: https://pan.baidu.com/share/init?surlRB9oTmlbIV0pg1Th-Tdd4Q 提取码: uk87 效果不是很好,适合小图片。推荐:heygen 参考设置&…

H12-821_111

111.如图所示,R2传递10.0.1.0/24的路由给R3时,该路由的Next_Hop地址是以下哪一个? A.10.0.23.3 B.10.0.23.2 C.10.0.12.1 D.10.0.12.2 答案:C 注释: 这道题想给大家强调的是R1发送路由给R2时,下一跳地址是…

redis整合

一.redis的发布订阅 什么 是发布和订阅 Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。 Redis 客户端可以订阅任意数量的频道。 1、Redis的发布和订阅 客户端订阅频道发布的消息 频道发布消息 订阅者就可以…

C#从网址上读取json数据

需求:从客户给的网址中读取json格式的数据。 找了好多资料,都不太好使,看到了一篇很有帮助的文章。以下大部分内容和这篇找到的文章近似。太不容易了,同时也感谢这篇文章的作者心所欲。 https://www.cnblogs.com/zoujinhua/p/10…

先进车辆驾驶舱系统的强大网络安全协议

近年来,车辆驾驶舱系统发展迅速,融入了导航、娱乐和车辆性能监控系统等先进技术。随着驾驶舱变得更加互联和依赖软件,它们也变得更容易受到网络安全威胁。实施强大的网络安全协议对于保护驾驶员和乘客以及保持车辆运行的完整性至关重要。 本…

springboot124中药实验管理系统设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的中药实验管理系统设计与实现 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章…

书生·浦语大模型--第五节课笔记作业--LMDeploy 大模型量化部署实践

文章目录 大模型部署背景LMDeploy简介动手实践创建环境服务部署在线转换离线转换TurboMind推理API服务Gradio 作为前端 Demo演示TurboMind 服务作为后端TurboMind 推理作为后端 作业 大模型部署背景 部署:将训练好的模型在特定软硬件环境中启动的过程 挑战&#x…

某马头条——day10

热文章数据查询 分布式任务调度xxl-job 概述 环境搭建 docker化部署 docker run -p 3306:3306 --name mysql57 \ -v /opt/mysql/conf:/etc/mysql \ -v /opt/mysql/logs:/var/log/mysql \ -v /opt/mysql/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORDroot\ -d mysql:5.7 dock…

255:vue+openlayers 加载tomtom地图(多种形式)

第255个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+openlayers中添加tomtom地图,这里包含了多种形式,诸如中文标记、英文标记、白天地图、晚上地图、卫星影像图,高山海拔地形图等。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果 文章目录 示…

docker 安装python3.8环境镜像并导入局域网

一、安装docker yum -y install docker docker version #显示 Docker 版本信息 可以看到已经下载下来了 拉取镜像python3镜像 二、安装docker 中python3环境 运行本地镜像,并进入镜像环境 docker run -itd python-38 /bin/bash docker run -itd pyth…

MySQL(基础篇)——SQL

一.SQL分类 二.DDL(数据定义语言) 1.DDL——数据库操作 ① 查询 查询所有数据库 SHOW DATABASES 查询当前所处数据库 SELECT DATABASE() ② 创建 CREATE DATABASE [IF NOT EXISTS] 数据库名(通常以db结尾) [DEFAULT CHARSET 字符集] [COLLATE 排序规则] ③ …

免费的 UI 设计资源网站 Top 8

今日与大家分享8个优秀的免费 UI 设计资源网站。这些网站的资源包括免费设计材料站、设计工具、字体和其他网站,尤其是一些材料站。它们是免费下载的,材料的风格目前很流行,适合不同的项目。非常适合平面设计WEB/UI设计师收藏,接下…

HTTP协议简介

什么是HTTP 超文本传输协议( HyperText Transfer Protoco,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。 HTTP(HyperText Transfer Protocol,超文本传输协议)是一个基于请求与响应,无状态的,应用层的协议常…

使用PowerShell命令行,批量修改文件编码

目录 ■前言 ■PowerShell命令 ■效果 ■前言 今天统计修改代码量,使用工具时,发现有些代码无法统计。 原因时UTF-8中有某些特殊字符,工具不能识别。 但是,如果把代码转换为SJIS格式,就能正常统计了。 因此&…

新能源汽车智慧充电桩管理方案:环境监测与充电安全多维感知

随着新能源技术的不断发展,新能源充电桩作为电动汽车的重要基础设施,其管理和维护变得尤为重要。环境监测类传感器能够实时监测充电桩周围的环境参数,如温度、湿度等,为管理人员提供及时、准确的数据,以便做出相应的调…

云手机与实体手机的对比

在数字化时代,云手机作为一种虚拟手机在云端服务器上运行,与传统的实体手机相比存在诸多差异。让我们深入探讨云手机与实体手机之间的区别,以便更好地了解它们的特点和优势。 外观上的差异 实体手机具有实际的外观和重量,占据一定…

[极客大挑战 2019]LoveSQL1

万能密码测试,发现注入点 注意这里#要使用url编码才能正常注入 测试列数,得三列 查看table,一个是geekuser另一个是l0ve1ysq1 查看column,有id,username,password,全部打印出来,…

CSS之高度塌陷和外边距塌陷

目录 1.高度塌陷(原因,如何解决) 【概念介绍】 【解决办法】 【概念介绍-BFC】 【拓展-BFC的触发条件】 2.外边距塌陷 (原因,如何解决) 【概念介绍】 【两种情况】 1.相邻块元素 2.嵌套块元素 【…

架构师之路(十六)计算机网络(传输层)

前置知识(了解):计算机基础。 作为架构师,我们所设计的系统很少为单机系统,因此有必要了解计算机和计算机之间是怎么联系的。局域网的集群和混合云的网络有啥区别。系统交互的时候网络会存在什么瓶颈。 既然网络层已经…
最新文章