题目要求

给定两个由小写字母构成的字符串 A 和 B ,只要我们可以通过交换 A 中的两个字母得到与 B 相等的结果,就返回 true ;否则返回 false 。

示例:

示例1

输入: A = "ab", B = "ba"
输出: true

示例2

输入: A = "ab", B = "ab"
输出: false

示例3

输入: A = "aa", B = "aa"
输出: true

示例4

输入: A = "abab", B = "abab"
输出: true

示例5

输入: A = "aaaaaaabc", B = "aaaaaaacb"
输出: true

示例6

输入: A = "", B = "aa"
输出: false

题目分析

题目要求只能交换A、B字符串中的两个字母,相等的话为True,不等的话为False;

  • 从示例2、3、4(A=B)中:当A、B相等时,有时为True,有时为False,可以看出为True的示例中有相同的字母,因此存在相同字母时,两者交换其实还是一样的;字母都不相同的话,无法交换即False
  • 字符串A、B长度不一致时,直接False
  • 当长度一致,A、B不一样时,遍历所有字母,当不一样时,将下标赋值给新的list中,新的list的长度下面分类讨论
    *长度 = 2,说明有两个位置的元素不一样:若相互之间不同位置的元素一致则为True,否则为False
    *长度 !=2,说明存在两个以上的元素不一致
    下面将按照上述分析用Python写出详细代码:

代码

class Solution(object):def buddyStrings(self,A,B):a = []               # 存放不一致元素的下标if A == B:           # AB相等时,'aa'和'aa'True,'ab'和'ab'Falseif len(A) == len(set(A)):    # 字符串中没有相同元素时,如'ab'和'ab',则为Falsereturn Falseelse:                        # 否则如:'aa'和'aa'、"abab"和"abab",为Truereturn Trueif len(A) != len(B):        # 长度不一样时,直接Falsereturn Falsefor i in range(len(A)):     # 当长度一致,字符串不相等时,如"ab"和"ba",遍历所有元素if A[i] != B[i]:       a.append(i)         # 将不一致的元素下标放入a中if len(a) != 2:             # a的长度不等于2时,说明有超过两个元素不一样,Falsereturn False   if A[a[0]] == B[a[1]] and A[a[1]] == B[a[0]]:     # a的长度为2时,相互之间不同位置的元素一致时,Truereturn Trueelse:                       # 不一致时,Falsereturn False

本人小白一个,大神有更高效的算法,望留言!!!
持续更新中。。。。。

LeetCode_859_python_亲密字符串相关推荐

  1. 【解题报告】Leecode 859. 亲密字符串——Leecode每日一题系列

    今天是坚持每日一题打卡的第二十四天 题目链接:https://leetcode-cn.com/problems/buddy-strings/ 题解汇总:https://zhanglong.blog.c ...

  2. 859. 亲密字符串

    859. 亲密字符串 给定两个由小写字母构成的字符串 A 和 B ,只要我们可以通过交换 A 中的两个字母得到与 B 相等的结果,就返回 true :否则返回 false . 示例 1: 输入: A ...

  3. python亲密度_859. 亲密字符串(Python)

    题目 难度:★★☆☆☆ 类型:字符串 给定两个由小写字母构成的字符串 A 和 B ,只要我们可以通过交换 A 中的两个字母得到与 B 相等的结果,就返回 true :否则返回 false . 提示 0 ...

  4. [Swift]LeetCode859. 亲密字符串 | Buddy Strings

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  5. LeetCode 859. 亲密字符串

    1. 题目 给定两个由小写字母构成的字符串 A 和 B ,只要我们可以通过交换 A 中的两个字母得到与 B 相等的结果,就返回 true :否则返回 false . 示例 1: 输入: A = &qu ...

  6. leetcode 859 亲密字符串

    https://leetcode-cn.com/problems/buddy-strings/ 题目 给你两个字符串s和goal,只要我们可以通过交换s中的两个字母得到与goal相等的结果,就返回tr ...

  7. C++算法学习(力扣:859. 亲密字符串)

    给定两个由小写字母构成的字符串 A 和 B ,只要我们可以通过交换 A 中的两个字母得到与 B 相等的结果,就返回 true :否则返回 false . 交换字母的定义是取两个下标 i 和 j (下标 ...

  8. LeetCode_字符串类

    文章目录 3.无重复字符的最长子串 415.字符串相加 345.反转字符串中的元音字母 14.最长公共前缀 28.实现strStr() 58.最后一个单词的长度 67.二进制求和 38.外观数列 12 ...

  9. C#LeetCode刷题之#859-亲密字符串​​​​​​​​​​​​​​(Buddy Strings)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3973 访问. 给定两个由小写字母构成的字符串 A 和 B ,只要 ...

  10. C#LeetCode刷题-字符串

    字符串篇 # 题名 刷题 通过率 难度 3 无重复字符的最长子串 24.6% 中等 5 最长回文子串 22.4% 中等 6 Z字形变换 35.8% 中等 8 字符串转整数 (atoi) 15.3% 中 ...

最新文章

  1. 扩展LLVM:添加指令、内部函数、类型等
  2. 解密迈向量产的百度Apollo自动驾驶技术与产品
  3. boost::detail模块fwd容器的测试程序
  4. last modified php,lastModified属性_用法示例-javascript词典-js编程词典-php中文网
  5. 程序员特有的9个坏习惯
  6. php 取前一天时间戳,php获取时间今日明天昨天时间戳
  7. 细数Python三大“罪”!为什么编程能力比我好10倍的人都在夸它?
  8. ESXi 5.1 安装 Mac OSX Lion 10.7
  9. filters.revealTrans.Transition用法
  10. 数据库表关联关系的基础知识
  11. SASS用法指南(转)
  12. 【uniapp滚动穿透】 在u-modal中使用scroll-view底下主页面会跟随滚动
  13. STM32 阿里云MQTT esp8266 AT命令
  14. BP神经网络求解异或算法
  15. 码流格式: Annex-B, AVCC(H.264)与HVCC(H.265), extradata详解
  16. HarmonyOS系统中内核实现NFC无线通信的方法
  17. 【Pytorch】AWSnet论文解读与实验复现
  18. Part III.S1. 基于离差最大化的直觉模糊多属性决策方法
  19. 网络安全--跑PIN找回WiFi密码(详细教程)
  20. vue当中addRoutes动态添加路由白屏解决和next(),next(“/“)的一些区别

热门文章

  1. 德银病危:心比天高,却落下黄粱一梦
  2. Redis: 为行情数据库设计键值
  3. 阿里云-高性能计算招聘
  4. c语言怎样用vc绘图,大佬们,小菜鸟想问一问用vc编译器做简易画图软件
  5. 【锂电池健康状态预测】基于matlab BP神经网络锂电池健康状态预测【含Matlab源码 688期】
  6. 【脑电信号】基于matlab小波变换脑电信号特征提取【含Matlab源码 511期】
  7. 【三维路径规划】基于matlab改进差分算法多无人机协同三维路径规划【含Matlab源码 169期】
  8. 字符串匹配代码C语言,KMP字符串匹配算法C语言实现
  9. 坦克位置伺服系统分析与设计_伺服电机噪音及不稳定分析
  10. centos里安装mysql有34_centos7安装mysql5.6.34遇到中的问题