双胞胎字符串

该博客探讨了一种字符串操作问题,其中给定两个字符串s和t,允许按奇偶位交换字符。通过示例解释了如何判断在有限次交换后能否将s转换为t。方法一是检查奇偶位对应字符是否可以匹配,方法二是排序奇偶位字符并比较。代码实现了这两种方法,并给出了测试用例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:
给定两个字符串,s和t,每次可以任意交换s的奇数位或偶数位上的字符,即奇数位上的字符能与其他奇数位的字符互换,偶数位上的字符也能与其他偶数位上
的字符互换,问能否经过若干次交换,是s变成t。
问题示例:
输入 s = “abcd”, t = “cdab”,输出是Yes,第1次a与c交换,第2次b与d交换。输入s=“abcd”,t=“bcda”,输出是No,
无论如何交换,都无法得到bcda.

"""
问题描述:
给定两个字符串,s和t,每次可以任意交换s的奇数位或偶数位上的字符,即奇数位上的字符能与其他奇数位的字符互换,偶数位上的字符也能与其他偶数位上
的字符互换,问能否经过若干次交换,是s变成t。
问题示例:
输入 s = "abcd", t = "cdab",输出是Yes,第1次a与c交换,第2次b与d交换。输入s="abcd",t="bcda",输出是No,
无论如何交换,都无法得到bcda.
"""
#代码实现:
#方法一、
class Double:

    def even_numbers(self,s):
        even = []
        for i in range(0,len(s),2):
            even.append(i)
        return even

    def odd_number(self,s):
        odd = []
        for i in range(1, len(s), 2):
            odd.append(i)
        return odd

    def judge(self,a,b):
        if s[even_list[0]] == t[even_list[1]] and s[odd_list[0]] == t[odd_list[1]]:
            return "Yes"
        else:
            return "No"

double = Double()
s = "abcd"
t = "cdab"
even_list = double.even_numbers(s)
odd_list = double.odd_number(s)
print("s与t分别是:",s,t)
print("是否位双胞胎:",double.judge(even_list,odd_list))


#方法二、
class Solution:
    #参数s和t:一对字符串
    #返回值:字符串,表示能否根据规则转换
    def isTwin(self,s,t):
        if len(s) != len(t):
            return "No"
        oddS = []
        evenS = []
        oddT = []
        evenT = []
        for i in range(len(s)):
            if i & 1:
                oddS.append(s[i])
                oddT.append(t[i])
            else:
                evenS.append(s[i])
                evenT.append(t[i])
        oddT.sort()
        oddS.sort()
        evenT.sort()
        evenS.sort()
        for i in range(len(oddS)):
            if oddS[i] != oddT[i]:
                return "No"
        for i in range(len(evenS)):
            if evenS[i] != evenT[i]:
                return "No"
        return "Yes"

if __name__ == "__main__":
    s = "abcdef"
    t = "cdefab"
    solution = Solution()
    print("s与t分别是:",s,t)
    print("是否位双胞胎:",solution.isTwin(s,t))

结果:
在这里插入图片描述

(1)读取文本,“本研究聚焦于双胞胎婴儿推车的系统性创新设计,力求突破传统产品的功能局限性,通过跨学科理论整合与工程技术优化,构建兼具安全性、舒适性与智能化的新一代育儿装备解决方案。首先,基于人机工程学原理,本课题运用三维动态仿真技术对推车骨架结构进行拓扑优化,采用有限元分析法验证碳纤维复合材料的轻量化特性(减重达23.6%)与结构强度(载荷承受提升40%),同时创新性设计非对称式悬挂系统以适配双胞胎差异化体重分布。其次,引入模块化设计理念,开发可重构功能模组系统,实现推车在并列式、前后式、分离式三种形态间的快速转换(转换时间<30秒),满足多场景育儿需求.研究进一步融合物联网技术,集成环境监测(PM2.5/温湿度)、体征感知(心率/体动)及防遗忘报警系统,通过BLE-Mesh组网实现数据云端交互.通过德尔菲法建立双胞胎推车评价指标体系,结合240组实地测试数据表明,本方案在操作便捷性(NPS值提升58%)、路面适应性(振动衰减系数达0.87)及功能扩展性等维度显著优于市场现有产品,为婴幼儿用品智能化发展提供重要范式参考。以下为本研究的核心目标关键参数。” (2)在编译环境中,用print输出原始文本的数据。 (3)对文本进行编辑: ①“本研究”改为“本文”,“本方案”改为“本文”,“本课题”改为“本文”,“力求”改为“旨在”,“构建”改为“提供”,“核心”改为“主要”,“关键”改为“重要”。 ②将“突破传统产品的功能局限性”,改为“对传统产品有所改进”。 ③将“新一代育儿装备解决方案”,改为“一种具有一定创新的婴儿推车方案”。 ④将“创新性设计”改为“设计”。 ⑤将英文的逗号改为中文的逗号,将英文的句号改为中文的句号。 ⑥删除倒数第2句话。 ⑦删掉“兼具安全性、舒适性与智能化的”。 ⑧删掉“系统性”。 ⑨删掉“通过跨学科理论整合与工程技术优化,”。 ⑩删掉“显著”。 (4)将编辑后的文本另存为“必做题2-文本-处理-另存.txt”。
最新发布
06-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值