LeetCode简单题之亲密字符串

news/2024/12/29 1:30:14/

题目

给你两个字符串 s 和 goal ,只要我们可以通过交换 s 中的两个字母得到与 goal 相等的结果,就返回 true ;否则返回 false 。
交换字母的定义是:取两个下标 i 和 j (下标从 0 开始)且满足 i != j ,接着交换 s[i] 和 s[j] 处的字符。
例如,在 “abcd” 中交换下标 0 和下标 2 的元素可以生成 “cbad” 。
示例 1:
输入:s = “ab”, goal = “ba”
输出:true
解释:你可以交换 s[0] = ‘a’ 和 s[1] = ‘b’ 生成 “ba”,此时 s 和 goal 相等。
示例 2:
输入:s = “ab”, goal = “ab”
输出:false
解释:你只能交换 s[0] = ‘a’ 和 s[1] = ‘b’ 生成 “ba”,此时 s 和 goal 不相等。
示例 3:
输入:s = “aa”, goal = “aa”
输出:true
解释:你可以交换 s[0] = ‘a’ 和 s[1] = ‘a’ 生成 “aa”,此时 s 和 goal 相等。
提示:
1 <= s.length, goal.length <= 2 * 10^4
s 和 goal 由小写英文字母组成
来源:力扣(LeetCode)

解题思路

  针对这样的题,需要我们分情况来考虑。首先看大前提,如果s和goal的长度不一样的话那么一定是不成立的,其二如果两个字符串一样且单个字符串中没有重复的字符,那么也不会成立,最后如果存在两个地方的字符不一样,那么尝试交换字符检查是否符合条件。

class Solution:def buddyStrings(self, s: str, goal: str) -> bool:if len(s)!=len(goal):  #大前提return Falsetemp=[]for i in range(len(s)):  #查找不一致的字符if s[i]!=goal[i]:temp.append(i)if len(temp)==0: #如果没有不一致的字符,则检查单个字符串中是否存在重复的字符return True if len(set(s))!=len(s) else False elif len(temp)!=2:  #如果不一样的点位不为2则不成立return Falseif s[temp[0]]==goal[temp[1]] and s[temp[1]]==goal[temp[0]]: #尝试交换return Trueelse:return False

在这里插入图片描述


http://www.ppmy.cn/news/605477.html

相关文章

Gitea——私有git服务器搭建详细教程

本文将从源代码和docker安装两种方式带大家从0&#xff5e;1通过Gitea搭建一个私有git服务器 Gitea——私有git服务器搭建教程什么是Gitea一、源代码安装方式1. 前置环境要求2. 下载gitea3. 构建运行二、Docker安装方式1. Docker安装2. Dokcer Compose安装3. 安装启动gitea4. 基…

centos7系统中忘记了root管理员账号密码的解决方式

随着计算机的使用越来越普遍&#xff0c;现在的用户都会有多个密码&#xff0c;不是这软件的密码就是那个的&#xff0c;QQ、邮箱、游戏&#xff0c;还有系统的登录密码&#xff01;每一个密码都不一样&#xff01;所以越来越多的密码需要去记住&#xff01;也因为这样&#xf…

LeetCode简单题之三个数的最大乘积

题目 给你一个整型数组 nums &#xff0c;在数组中找出由三个数组成的最大乘积&#xff0c;并输出这个乘积。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;6 示例 2&#xff1a; 输入&#xff1a;nums [1,2,3,4] 输出&#xff1a;24 示例 3&#xff1…

Golang的交叉编译问题

参考&#xff1a;Golang交叉编译各个平台的二进制文件 - Go语言中文网 - Golang中文社区 (studygolang.com)、也谈Go的可移植性 | Tony Bai 今天准备将一个在Mac上开发的Golang项目部署到云服务器上进行部署上线&#xff0c;于是通过go build将项目编译成mac下的Unix可执行二进…

vim用法

<h1>Linux vi/vim </h1>所有的 Unix Like 系统都会内建 vi 文书编辑器&#xff0c;其他的文书编辑器则不一定会存在。 但是目前我们使用比较多的是 vim 编辑器。 vim 具有程序编辑的能力&#xff0c;可以主动的以字体颜色辨别语法的正确性&#xff0c;方便程序设…

LeetCode简单题之删除字符串中的所有相邻重复项

题目 给出由小写字母组成的字符串 S&#xff0c;重复项删除操作会选择两个相邻且相同的字母&#xff0c;并删除它们。 在 S 上反复执行重复项删除操作&#xff0c;直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。 示例&#xff1a; 输入&…

vue项目中多环境打包指令配置

由于现在的项目打包本地服务器和客户的服务器的需求&#xff0c;所以需要添加多环境的打包的指令。过程比较简单&#xff1a; 1.首先要在跟文件夹下建立.env 比如 .env.pro1和.env.pro2。 其中内容主要包括&#xff1a; NODE_ENVproduction VUE_APP_API_BASE_URLxxx主要区别就…

MySQL索引面试题必备

MySQL索引必问面试题1. 什么是索引2. 索引分类3. 索引的基本操作主键索引的创建普通索引的创建唯一索引的创建复合索引的创建4. 索引的底层原理5. 聚簇索引和非聚簇索引6. 无法利用索引的情况参考&#xff1a;https://www.bilibili.com/video/BV19y4y127h4?p3https://www.cnbl…