首页 > 编程问答 >如何计算两个字符串之间不重叠的字母?

如何计算两个字符串之间不重叠的字母?

时间:2024-07-26 11:46:40浏览次数:8  
标签:python longest-substring

a = raw_input("Haystack ")
b = raw_input("Needle ")

common = {}
if len(a)<len(b):
for letter in a:
    if letter in b:
        common[letter]= 1

else:
  for letter in b:
     if letter in a:
        common[letter]= 1
print (len(common))

我不知道如何阅读不重叠的字母。如果用户输入haystack“qqwwee”和needle“qw”,那么它必须输出1而不是2,因为haystack中只有一个“qw”。


你的代码目前正在计算两个字符串之间 存在的 共同字母的数量,而不是不重叠出现的数量。为了计算不重叠出现的数量,你需要跟踪你在 haystack 字符串中匹配时使用的字母。

这是一个 Python 代码,展示了如何做到这一点:

a = input("Haystack: ")  # 使用 input() 获取 Python 3 中的输入
b = input("Needle: ")

common_count = 0
used_letters = set()  # 使用集合跟踪已使用的字母

needle_index = 0
for letter in a:
    if letter == b[needle_index] and letter not in used_letters:
        common_count += 1
        used_letters.add(letter)  # 将字母标记为已使用
        needle_index += 1
        if needle_index == len(b):  # 如果找到了所有 needle 字母,则中断
            break

print(common_count)

它是如何工作的:

  1. 初始化:
  2. common_count :从 0 开始,用于计算不重叠匹配的数量。
  3. used_letters :一个集合(用于存储唯一元素),用于跟踪 haystack 中已使用的字母,确保不重复计算。
  4. needle_index :从 0 开始,跟踪当前在 needle 字符串中的位置。

  5. 迭代 haystack 字符串:

  6. 对于 haystack 中的每个 letter ,检查它是否与 needle 字符串中 needle_index 位置的当前字母匹配。
  7. 如果匹配 letter 以前没有使用过(不在 used_letters 中):

    • 增加 common_count (找到一个不重叠的匹配项)。
    • letter 添加到 used_letters 中以将其标记为已使用。
    • 增加 needle_index 以移动到 needle 字符串中的下一个字母。
    • 如果 needle_index 达到 needle 的长度,这意味着已找到所有 needle 字母,循环将中断。
  8. 打印结果:

  9. 最后,打印 common_count ,它表示 haystack 和 needle 字符串之间不重叠匹配的总数。

使用你的示例 "qqwwee" 和 "qw",此代码将正确输出 1 ,因为它只找到 "qw" 的一个不重叠出现。

标签:python,longest-substring
From: 36976125

相关文章

  • 【Python自动化办公】用Pandas库自动化操作Excel表格,从读取、写入到数据处理和分析
    文末免费赠送精品编程资料~~前言Python的第三方Pandas库是数据处理和分析中的利器,其强大的功能可以帮助我们轻松地对Excel表格进行自动化操作。接下来,我们将介绍九个用Pandas库操作Excel的编程例子,并且每个例子都会涉及不同的知识点,确保全面掌握这个主题。1.读取和写入E......
  • 总结24个Python接单赚钱平台与详细教程,兼职月入5000+
    如果说当下什么编程语言最靠谱或者比较适合搞副业?答案肯定100%是:Python。python是所有语法中最简单易上手的语言,不需要特别的的英语词汇量,逻辑思维也不需要很差就能上手。而且学会了之后就能编写代码爬取各种数据,制作各种图表,提升工作效率。而且还能利用业余时间接点私活......
  • python安装第三方库的国内镜像
    直接:pipconfigsetglobal.index-urlhttps://pypi.doubanio.com/simple设置了全局的第三方库的下载文件镜像请求网址。安装第三方库:pipinstallscrapy--scrapy第三方库名称 pip从国内镜像安装的命令使用中国大陆地区的Python包镜像服务时,可以通过修改p......
  • 如何将Python嵌入.Net?
    我尝试基于文档此处和此处使用pythonnet将Python嵌入到.Net中。这是我的代码Runtime.PythonDLL=@"D:\Dev\Console\.conda\python311.dll";PythonEngine.Initialize();dynamicsys=Py.Import("sys");Console.WriteLine("Pythonversion:&quo......
  • 使用pybind11封装c++的dll,供python调用
    用pip安装好pybind11 文件清单,都写在一个目录里//文件名:add.cppextern"C"doubleadd(doublein1,doublein2){returnin1+in2;}//文件名:sub.cppextern"C"doublesub(doublein1,doublein2){returnin1-in2;}//文件名:mul.cppextern"......
  • python-myStudyList
     1  下载软件1.1下载python最新版本并安装下载地址:百度搜索python官网。WelcometoPython.org。 1.2官网学习网页:PythonTutorials–RealPython   1.3也可以下载集成环境软件Anaconda。 Anaconda软件商城官方正版免费下载(msc23.cn) 2 ......
  • Python语法基础
    基本语句输入input() eg:输出print(内容)注释单行注释:#注释内容多行注释:"""注释内容"""数据类型: 字面量:整型、浮点数、字符串......intfloatstring查看数据类型:type(数据)查看数据类型 转换函数int(x):将x转换成整数类型float(x):将x转......
  • PyTesseract 不提取文本?我是所有这些Python的新手,请需要h3lp
    它不想从图像中提取文本,就像终端保持黑色并带有空格,就像它实际上试图提取文本一样,这是我的代码和图像从PIL导入图像导入pytesseract导入CV2“C:\用户\埃米利亚诺\下载\practic.png”pytesseract.pytesseract.tesseract_cmd="C:\ProgramFiles\Tesseract-OCR\tesseract.exe......
  • Python安装第三方库
    Python安装PILPIL(PythonImagingLibrary)是一个旧的Python库,用于处理图像。然而,PIL已经不再维护,并被一个名为Pillow的库所取代。Pillow是PIL的一个分支,并且完全兼容PIL。建议使用Pillow而不是PIL。pipinstallpillowPython安装moviepymoviepy是一个用于视频编辑的Python库,......
  • 优化Python中图像中的OCR文本检测
    我目前正在用python编写一个程序,该程序获取包含大量文本的图像,将其提取到.txt文件,然后将找到的单词与另一个文件中的单词列表进行比较,并创建一些坐标(根据像素)在图像中找到的单词中,如果找到图像,则会在图像中绘制红色方块。到目前为止,我已经正确处理了坐标部分,在单词周围绘制了......