目录
Python算法之旅:http://iyenn.com/rec/1699032.html?spm=1001.2014.3001.5502
欢迎志同道合者一起交流学习,我的QQ:94509325/微信
找不同(Find The Difference)(也被称为“找茬”或“差异识别”)是一种训练观察力和注意力的技能,它可以在多个领域中找到实际应用。常见的应用场景有:
1、教育领域:在幼儿园和小学教育中,找不同游戏常被用来帮助孩子们锻炼他们的观察力和专注力;在艺术和设计课程中,学生可能需要找出两幅相似画作中的细微差别,以培养对细节的关注。
2、测试和质量控制:在制造业中,找不同技能用于产品质量检查,确保产品符合预定的标准和规格;在软件测试中,测试人员需要找出新版本软件与旧版本之间的差异,确保所有功能正常工作。
3、法律和调查:在法医学中,专家可能需要比较不同照片或证据以找出关键差异,帮助解决犯罪案件;在审计和财务调查中,找不同技能有助于发现财务报表或记录中的不一致之处。
4、游戏和娱乐:找不同游戏是休闲活动的一种形式,可以在家庭聚会、朋友聚会或在线平台上进行,为人们提供娱乐和放松。
5、广告和市场营销:在广告创意中,找不同游戏或挑战可以用来吸引公众的注意力,增加品牌曝光度;在产品推广中,通过展示产品的新旧版本差异,可以强调产品的升级和改进。
6、科学研究:在生物学中,研究人员可能需要比较不同物种或基因序列的差异,以了解它们的进化关系;在天文学中,科学家通过比较不同时间点的观测数据来寻找宇宙中的变化或新发现。
7、安全和情报分析:在安全监控中,分析师需要识别监控录像中的异常行为或变化;在情报分析中,找不同技能有助于发现情报信息中的不一致之处或隐藏线索。
总之,找不同这项技能在日常生活和工作中都有广泛的应用,它可以帮助人们更准确地识别差异,提高观察和判断能力。
1、找不同(不限定添加字符):
1-1、Python:
- # 1.问题描述:
- # 给定字符串str1和str2,字符串str2由随机打乱字符顺序的字符串str1在任意位置添加一个或多个字符生成,找出在str2中添加的字符及所处位置.
- # 2.问题示例:
- # 输入str1 = "myelsa",str2 = "mwyoenldsearful",依次输出w/1 o/3 n/5 d/7 e/9 r/11 f/12 u/13 l/14.
- # 3.代码实现:
- class Solution:
- # 参数str1: 原始字符串
- # 参数str2: 添加字符后的字符串
- # 返回值added_chars: 包含添加的字符及其位置的元组列表
- def find_the_difference(self, str1, str2):
- # 初始化两个指针
- i = 0 # str1的指针
- j = 0 # str2的指针
- # 存储添加的字符及其位置
- added_chars = []
-
- # 当两个指针都没有超过各自的字符串长度时
- while i < len(str1) and j < len(str2):
- # 如果当前字符相等,则两个指针都向前移动
- if str1[i] == str2[j]:
- i += 1
- j += 1
- # 如果不相等,说明str2中在当前位置添加了字符
- else:
- # 将添加的字符及位置添加到列表中
- added_chars.append((str2[j], j))
- # 只移动str2的指针
- j += 1
- # 检查str2是否还有剩余字符,如果有,则都是添加的
- while j < len(str2):
- # 将剩余的字符及位置添加到列表中
- added_chars.append((str2[j], j))
- j += 1
- # 返回str2中所有添加字符的列表
- return added_chars
- # 主函数
- if __name__ == '__main__':
- # 对str1/str2两个参数进行赋值
- str1 = "myelsa"
- str2 = "mwyoenldsearful"
- # 实例化Solution类并调用自定义函数
- solution = Solution()
- added_chars_list = solution.find_the_difference(str1, str2)
- # 打印结果
- print("原始字符串:", str1)
- print("添加字符后的字符串:", str2)
- print("输出添加字符/位置:")
- for char, pos in added_chars_list:
- print(f"{char}/{pos}", end=' ')
- # 4.运行结果:
- # 原始字符串: myelsa
- # 添加字符后的字符串: mwyoenldsearful
- # 输出添加字符/位置:
- # w/1 o/3 n/5 d/7 e/9 r/11 f/12 u/13 l/14
1-2、VBA:
- Rem 自定义函数,功能:找不同(不限定添加字符)
- Function FindTheDifference(str1 As String, str2 As String) As Variant
- ' 定义两个模拟指针变量i和j,分别用于遍历str1和str2
- Dim i As Long
- Dim j As Long
- ' 定义数组addedChars,用于存储添加的字符及其位置的数组
- Dim addedChars() As Variant
- ' 定义计数器addedCharsCount,用于记录已添加的字符数量
- Dim addedCharsCount As Long
- ' 定义临时数组tempArray,用于模拟元组存储单个添加的字符及其位置
- Dim tempArray(1 To 2) As Variant
-
- ' 初始化变量和计数器
- i = 1
- j = 1
- addedCharsCount = 0
- ' 当两个模拟指针变量值都没有超过各自的字符串长度时
- While i <= Len(str1) And j <= Len(str2)
- ' 如果当前字符相等,则两个模拟指针变量都向前移动
- If mid(str1, i, 1) = mid(str2, j, 1) Then
- i = i + 1
- j = j + 1
- ' 如果不相等,说明str2中在当前位置添加了字符
- Else
- ' 重新定义数组大小,保留原有数据
- ReDim Preserve addedChars(addedCharsCount)
- ' 将添加的字符及位置存储到临时数组tempArray中
- tempArray(1) = mid(str2, j, 1) ' 字符
- tempArray(2) = j ' 位置
- ' 将临时数组添加到addedChars数组中
- addedChars(addedCharsCount) = tempArray
- ' 只移动str2的模拟指针j
- j = j + 1
- ' 增加已添加的字符数量
- addedCharsCount = addedCharsCount + 1
- End If
- Wend
- ' 检查str2是否还有剩余字符,如果有,则都是添加的
- While j <= Len(str2)
- ' 重新定义数组大小,保留原有数据
- ReDim Preserve addedChars(addedCharsCount)
- ' 将剩余的字符及位置存储到临时数组tempArray中
- tempArray(1) = mid(str2, j, 1) ' 字符
- tempArray(2) = j ' 位置
- ' 将临时数组添加到addedChars数组中
- addedChars(addedCharsCount) = tempArray
- ' 移动str2的模拟指针变量j
- j = j + 1
- ' 增加已添加的字符数量
- addedCharsCount = addedCharsCount + 1
- Wend
- ' 返回str2中所有添加字符的数组
- FindTheDifference = addedChars
- End Function
- Rem 执行过程,功能:调用自定义函数FindTheDifference,在立即窗口中输出结果
- Sub TestRun()
- Dim str1 As String
- Dim str2 As String
- Dim addedChars As Variant, addedChars_str As Variant
- Dim i As Long
-
- ' 对str1/str2两个参数进行赋值
- str1 = "myelsa"
- str2 = "mwyoenldsearful"
- ' 调用函数
- addedChars = FindTheDifference(str1, str2)
- ' 打印结果
- Debug.Print "原始字符串:" & str1
- Debug.Print "添加字符后的字符串:" & str2
- Debug.Print "输出添加字符/位置:"
- ' 遍历数组并打印结果
- For i = LBound(addedChars) To UBound(addedChars)
- addedChars_str = addedChars_str + addedChars(i)(1) & "/" & addedChars(i)(2) & " "
- Next i
- Debug.Print addedChars_str
- End Sub
- '结果输出:
- '原始字符串: myelsa
- '添加字符后的字符串: mwyoenldsearful
- '输出添加字符/位置:
- 'w/2 o/4 n/6 d/8 e/10 r/12 f/13 u/14 l/15
注意:1-2中的代码需粘贴到你的VBA编辑器中,按F5执行TestRun程序,在立即窗口中输出结果。
2、相关文章:
2-2、Python-VBA编程500例-019-01(入门级)
2-3、Python-VBA编程500例-020-01(入门级)
2-4、Python-VBA编程500例-020-02(入门级)
Python算法之旅:http://iyenn.com/rec/1699032.html?spm=1001.2014.3001.5502
个人主页:非风V非雨-CSDN博客
欢迎志同道合者一起交流学习,我的QQ:94509325/微信:



评论记录:
回复评论: