鱼C论坛

 找回密码
 立即注册
查看: 13527|回复: 67

[已解决]Python:每日一题 360

[复制链接]
发表于 2020-3-27 18:00:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 zltzlt 于 2020-3-27 18:26 编辑

今天的题目:


给定两个由小写字母构成的字符串 a 和 b ,判断是否可以通过交换字符串 a 中的两个字母得到字符串 b。

示例 1:

输入:a = "ab",b = "ba"
输出:True
示例 2:

输入:a = "ab",b = "ab"
输出:False
示例 3:

输入:a = "aa",b = "aa"
输出:True
示例 4:

输入:a = "aaaaaaabc",b = "aaaaaaacb"
输出:True
示例 5:

输入:a = "",b = "aa"
输出:False


欢迎大家一起答题!
最佳答案
2020-3-27 21:16:53
def func360(a,b):
    if len(a) != len(b):
        return False
    count = 0
    temp = []
    for i in range(len(a)):
        if a[i] != b[i]:
            print("different")
            count +=1
            if count > 2:
                return False
            temp.append(a[i])
            temp.append(b[i])
    if count ==1:
        return False
    elif count ==0:
        tempa = "".join(set(a))
        if len(tempa) != len(a):
            return True
        return False
    elif count == 2:
        if temp[:2] == temp[:1:-1]:
            return True
        return False

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-27 18:23:12 | 显示全部楼层
本帖最后由 一个账号 于 2020-3-27 18:33 编辑
  1. def func(a, b):
  2.     if len(a) != len(b):
  3.         return False
  4.     else:
  5.         for i in range(len(a)-1):
  6.             new = a
  7.             new = list(new)
  8.             new[i], new[i+1] = new[i+1], new[i]
  9.             if "".join(new) == b:
  10.                 return True
  11.     return False
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
zltzlt + 3 + 3

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-27 18:24:30 | 显示全部楼层

解答错误

输入:a = "aa", b = "aa"
输出:False
预期结果:True
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-27 18:24:55 | 显示全部楼层
zltzlt 发表于 2020-3-27 18:24
解答错误

输入:a = "aa", b = "aa"
  1. def func(a, b):
  2.     if len(a) != len(b):
  3.         return False
  4.     else:
  5.         for i in range(len(a)):
  6.             new = a
  7.             new = list(new)
  8.             new[i], new[i+1] = new[i+1], new[i]
  9.             if "".join(new) == b:
  10.                 return True
  11.     return False
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-27 18:25:23 | 显示全部楼层
本帖最后由 March2615 于 2020-3-27 18:26 编辑
  1.     if len(a) != len(b):
  2.         return False
  3.     temp = []
  4.     for i in range(len(a)):
  5.         if a[i] != b[i]:
  6.             temp.append(a[i])
  7.             temp.append(b[i])
  8.     if len(temp) != 4 or list(reversed(temp)) != temp:
  9.         return False
  10.     return True
复制代码


评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
zltzlt + 4 + 4

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-27 18:27:07 | 显示全部楼层
March2615 发表于 2020-3-27 18:25
上一题还是359,突然变成了370

感谢指出,太粗心了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-27 18:27:12 | 显示全部楼层

输入了什么?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-27 18:27:35 | 显示全部楼层

a = "ab",b = "ab"
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-27 18:28:13 | 显示全部楼层

解答错误

输入:a = "aa", b = "aa"
输出:False
预期结果:True
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-27 18:29:08 | 显示全部楼层
本帖最后由 ouyunfu 于 2020-3-27 18:36 编辑
  1. def f360(a:str,b:str)->bool:
  2.     m,n = len(a),len(b)
  3.     L=[i for i in range(m) if a[i]!=b[i]]
  4.     if m!=n:
  5.         return False
  6.     elif a==b:
  7.         return True
  8.     elif a[:L[0]]+a[L[1]]+a[L[0]+1:L[1]]+a[L[0]]+a[L[1]+1:]==b:
  9.         return True
  10.     else: return False
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
zltzlt + 3 + 3

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-27 18:29:57 | 显示全部楼层
  1. def func(a, b):
  2.     if len(a) != len(b):
  3.         return False
  4.     else:
  5.         for i in range(len(a)-1):
  6.             new = a
  7.             new = list(new)
  8.             new[i], new[i+1] = new[i+1], new[i]
  9.             if "".join(new) == b:
  10.                 return True
  11.     return False
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-27 18:35:22 | 显示全部楼层
本帖最后由 zltzlt 于 2020-3-27 18:37 编辑


解答错误

输入:a = "ab", b = "ab"
输出:True
预期结果:False
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-27 18:36:06 | 显示全部楼层
本帖最后由 zltzlt 于 2020-3-27 18:46 编辑


解答错误

输入:a = "abab", b = "abab"
输出:False
预期结果:True
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-27 18:36:51 | 显示全部楼层
zltzlt 发表于 2020-3-27 18:36
解答错误

输入:a = "abab", b = "abab"

你的题目没说
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-27 18:38:31 | 显示全部楼层
本帖最后由 永恒的蓝色梦想 于 2020-3-27 19:10 编辑
  1. class Solution:
  2.     def buddyStrings(self, a: str, b: str) -> bool:
  3.         count=0
  4.         temp=False

  5.         if len(a)!=len(b):
  6.             return False
  7.         
  8.         elif a==b:
  9.             return len(set(a))!=len(a)

  10.         for a,b in zip(a,b):
  11.             if a!=b:
  12.                 if temp:
  13.                     return False

  14.                 elif count:
  15.                     if a==charA and b==charB:
  16.                         temp=True

  17.                     else:
  18.                         return False

  19.                 else:
  20.                     count=1
  21.                     charA=b
  22.                     charB=a

  23.         return temp
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-27 18:38:44 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-27 18:38:57 | 显示全部楼层

原题是:给定两个由小写字母构成的字符串 A 和 B ,只要我们可以通过交换 A 中的两个字母得到与 B 相等的结果,就返回 true ;否则返回 false 。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-27 18:40:38 | 显示全部楼层
zltzlt 发表于 2020-3-27 18:36
解答错误

输入:a = "abab", b = "abab"

这不是可以把a中的两个a交换位置吗?
感觉今天的题想不到的情况有点多啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-27 18:44:37 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-27 18:46:08 | 显示全部楼层
本帖最后由 一个账号 于 2020-3-27 18:53 编辑
  1. class Solution:
  2.     def buddyStrings(self, A: str, B: str) -> bool:
  3.         if len(A) != len(B): return False
  4.         if A == B and len(set(A)) < len(A): return True
  5.         dif = [(a, b) for a, b in zip(A, B) if a != b]
  6.         return len(dif) == 2 and dif[0] == dif[1][::-1]
复制代码

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
zltzlt + 1 + 1

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-24 14:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表