数据结构实战:变位词侦测

文章目录

  • 一、实战概述
  • 二、实战步骤
    • (一)逐个比较法
      • 1、编写源程序
      • 2、代码解释说明
        • (1)函数逻辑解释
        • (2)主程序部分
      • 3、运行程序,查看结果
      • 4、计算时间复杂度
    • (二)排序比较法
      • 1、编写源程序
      • 2、代码解释说明
        • (1) 函数逻辑解释
        • (2)主程序部分
      • 3、运行程序,查看结果
      • 4、计算时间复杂度
    • (三)计数比较法
      • 1、编写源程序
      • 2、代码解释说明
        • (1)函数逻辑解释
        • (2)主程序部分
      • 3、运行程序,查看结果
      • 4、计算时间复杂度
    • (四)相互包含法
      • 1、编写源程序
      • 2、代码解释说明
        • (1)函数逻辑解释
        • (2)主程序部分
      • 3、运行程序,查看结果
      • 4、计算时间复杂度
    • (五)强力法
  • 三、实战总结

一、实战概述

  • 本实战通过编写四个Python程序,分别采用逐个比较法、排序比较法、计数比较法和相互包含法来解决变位词检测问题。逐个比较法的时间复杂度为 O ( n 2 ) \text{O}(n^2) O(n2),虽然实现简单但效率较低;排序比较法则利用字符串排序后直接比较,时间复杂度为 O ( n l o g n ) \text{O}(n log n) O(nlogn),效率相对较高;计数比较法则统计字符出现次数进行对比,时间复杂度为 O ( n ) \text{O}(n) O(n),是四种方法中最高效的;而相互包含法则分别检查两个字符串中的字符是否完全包含对方,时间复杂度为 O ( n ∗ m ) \text{O}(n*m) O(nm)

  • 在实际应用中,针对不同的场景需求和输入规模,可选择合适的算法以达到时间和空间效率的最佳平衡。例如,在处理大规模字符串时,计数比较法更优;而在较小规模或对内存有限制的场景下,排序比较法可能是更好的选择。同时,强力法由于其极高的时间复杂度( n ! n! n!),不适用于实际问题求解。

二、实战步骤

(一)逐个比较法

1、编写源程序

  • 编写Python程序 - 变位词侦测问题解法01-逐个比较法.py
    在这里插入图片描述
'''
功能:变位词侦测问题解法01-逐个比较法
作者:华卫
日期:2024年01月13日
'''def anagramSolution1(s1, s2):stillOK = Trueif len(s1) != len(s2):stillOK = Falsealist = list(s2)pos1 = 0while pos1 < len(s1) and stillOK:pos2 = 0found = Falsewhile pos2 < len(alist) and not found:if s1[pos1] == alist[pos2]:found = Trueelse:pos2 = pos2 + 1if found:alist.pop(pos2)else:stillOK = Falsepos1 = pos1 + 1return stillOKstr1 = input('Input the first string: ')
str2 = input('Input the second string: ')
if anagramSolution1(str1, str2):print(str1, 'and', str2, 'are anagrams.')
else:print(str1, 'and', str2, 'are not anagrams.')

2、代码解释说明

  • 这段代码实现了一个名为anagramSolution1的函数,用于检测两个输入字符串(s1和s2)是否为变位词。
(1)函数逻辑解释
  1. 函数首先检查两个字符串的长度是否相等,如果不等,则直接返回False,表示它们不是变位词。

  2. 将第二个字符串s2转换为字符列表alist,便于进行元素操作。

  3. 使用变量pos1遍历第一个字符串s1的每个字符。

    a. 初始化一个布尔变量found为False,用于记录当前字符是否在alist中找到。

    b. 对于s1中的每个字符,使用pos2遍历alist,寻找匹配项。

    • 如果找到匹配项(即s1[pos1] == alist[pos2]),将found设为True,并跳出内层循环。

    • 否则,将pos2加1继续搜索下一个字符。

    c. 如果找到了匹配项,从alist中移除该字符(alist.pop(pos2));否则,将stillOK设为False,表示无法构成变位词。

    d. 将pos1递增,准备处理下一个字符。

  4. 当遍历完s1的所有字符且stillOK仍为True时,说明s1s2是变位词,函数返回True;否则返回False。

(2)主程序部分
  • 通过input()获取用户输入的两个字符串str1和str2。

  • 调用anagramSolution1(str1, str2)函数判断这两个字符串是否为变位词。

  • 根据函数返回的结果输出相应的信息,如果两个字符串是变位词,则输出"str1 and str2 are anagrams.“,否则输出"str1 and str2 are not anagrams.”。

3、运行程序,查看结果

  • 运行两次程序,第一次是同位词,第二次不是同位词
    在这里插入图片描述

4、计算时间复杂度

  • 此程序的时间复杂度为 O ( n 2 ) \text{O}(n^2) O(n2),其中n代表输入字符串s1和s2的长度(假设它们是等长的)。

  • 首先检查两个字符串长度,时间复杂度为 O ( 1 ) \text{O}(1) O(1)

  • 将字符串s2转换为列表alist,时间复杂度为 O ( n ) \text{O}(n) O(n)

  • 使用两层循环进行逐个字符比较:

    • 外层循环遍历字符串s1,次数为n,时间复杂度为 O ( n ) \text{O}(n) O(n)
    • 内层循环在每一轮外层循环中遍历alist寻找匹配项,最坏情况下需要遍历整个alist,次数也为n,因此内层循环的时间复杂度为 O ( n ) \text{O}(n) O(n)
    • 因此,总的时间复杂度为 O ( n ∗ n ) \text{O}(n*n) O(nn),即 O ( n 2 ) \text{O}(n^2) O(n2)
  • 此外,在内层循环找到匹配项后执行的alist.pop(pos2)操作,虽然在Python中平均时间复杂度为 O ( n ) \text{O}(n) O(n),但在实际应用中(由于每次找到一个匹配项就移除一个元素),其对于整体时间复杂度的影响可以忽略不计,所以整体时间复杂度仍视为 O ( n 2 ) \text{O}(n^2) O(n2)

  • T ( n ) = ∑ i = 1 n = n ( n + 1 ) 2 ≈ O ( n 2 ) \displaystyle \text{T}(n)=\sum_{i=1}^n=\frac{n(n+1)}{2}\approx \text{O}(n^2) T(n)=i=1n=2n(n+1)O(n2)

(二)排序比较法

1、编写源程序

  • 编写Python程序 - 变位词侦测问题解法02-排序比较法.py
    在这里插入图片描述
'''
功能:变位词侦测问题解法02-排序比较法
作者:华卫
日期:2024年01月13日
'''def anagramSolution2(s1,s2):alist1 = list(s1)alist2 = list(s2)alist1.sort()alist2.sort()pos = 0matches = Truewhile pos < len(s1) and matches:if alist1[pos] == alist2[pos]:pos = pos + 1else:matches = Falsereturn matchesstr1 = input('Input the first string: ')
str2 = input('Input the second string: ')
if anagramSolution2(str1, str2):print(str1, 'and', str2, 'are anagrams.')
else:print(str1, 'and', str2, 'are not anagrams.')

2、代码解释说明

  • 这段代码实现了一个名为anagramSolution2的函数,用于检测两个输入字符串(s1和s2)是否为变位词。
(1) 函数逻辑解释
  1. 首先将输入的两个字符串s1s2分别转换为字符列表alist1alist2

  2. 对这两个字符列表进行排序操作,排序后的列表中,相同的字符将会按照字典序排列到一起。

  3. 初始化一个变量pos为0,表示当前比较的位置;同时初始化布尔值matches为True,用以记录是否所有对应位置的字符都匹配成功。

  4. 使用while循环遍历两个已排序的字符列表,直到遍历完其中一个列表或发现不匹配为止:

    • 如果在相同位置上的字符相等(即alist1[pos] == alist2[pos]),则将pos加1继续比较下一个字符。
    • 否则,将matches设置为False,跳出循环。
  5. 循环结束后,根据matches的值判断两个字符串是否为变位词:

    • matches为True,则说明原字符串s1s2是变位词,返回True。
    • matches为False,则说明它们不是变位词,返回False。
(2)主程序部分
  • 通过input()获取用户输入的两个字符串str1和str2。

  • 调用anagramSolution2(str1, str2)函数判断这两个字符串是否为变位词。

  • 根据函数返回的结果输出相应的信息,如果两个字符串是变位词,则输出"str1 and str2 are anagrams.“,否则输出"str1 and str2 are not anagrams.”。

3、运行程序,查看结果

  • 运行两次程序,第一次是同位词,第二次不是同位词
    在这里插入图片描述

4、计算时间复杂度

  • 此程序的时间复杂度主要由两部分组成:
  1. 排序操作:对输入字符串s1s2转换成的字符列表alist1alist2进行排序。Python内置的sort()方法采用Timsort算法,其平均时间复杂度为 O ( n l o g n ) \text{O}(n log n) O(nlogn),其中 n n n为列表长度(即字符串长度)。

  2. 遍历比较操作:在排序后的字符列表中,通过一个while循环逐个比较对应位置的字符是否相等,该过程的时间复杂度为 O ( n ) \text{O}(n) O(n)

  • 因此,整个程序的时间复杂度为 O ( n l o g n ) + O ( n ) = O ( n l o g n ) \text{O}(n log n) + \text{O}(n) = \text{O}(n log n) O(nlogn)+O(n)=O(nlogn),其中主要的时间消耗在于排序阶段。不过,在实际情况中,由于遍历比较阶段总是紧跟在排序阶段之后,并且只执行一次,所以整体的时间复杂度通常简记为 O ( n l o g n ) \text{O}(n log n) O(nlogn)

(三)计数比较法

1、编写源程序

  • 编写Python程序 - 变位词侦测问题解法03-计数比较法.py
    在这里插入图片描述
'''
功能:变位词侦测问题解法03-计数比较法
作者:华卫
日期:2024年01月13日
'''def anagramSolution4(s1, s2):c1 = [0] * 26c2 = [0] * 26for i in range(len(s1)):pos = ord(s1[i]) - ord('a')c1[pos] = c1[pos] + 1for i in range(len(s2)):pos = ord(s2[i]) - ord('a')c2[pos] = c2[pos] + 1j = 0stillOK = Truewhile j < 26 and stillOK:if c1[j] == c2[j]:j = j + 1else:stillOK = Falsereturn stillOKstr1 = input('Input the first string: ')
str2 = input('Input the second string: ')
if anagramSolution4(str1, str2):print(str1, 'and', str2, 'are anagrams.')
else:print(str1, 'and', str2, 'are not anagrams.')

2、代码解释说明

  • 这段代码实现了一个名为anagramSolution4的函数,用于检测两个输入字符串(s1和s2)是否为变位词。该方法采用计数比较法,统计每个字符串中各字符出现的次数,并进行比较。
(1)函数逻辑解释
  1. 初始化两个长度为26的计数列表c1c2,分别用于记录字符串s1s2中小写字母的出现次数。这里假设输入字符串仅包含小写字母。

  2. 对于字符串s1中的每一个字符:

    • 计算其在字母表中的位置,通过ord(s1[i]) - ord('a')得到(将字符转换为其ASCII值并减去’a’的ASCII值)。
    • 将对应位置的计数加1。
  3. 同样对字符串s2执行相同的操作,更新计数列表c2

  4. 初始化一个变量j为0,表示当前正在检查的小写字母的位置,以及一个布尔值stillOK,初始值为True,表示目前所有已检查的字符计数都相等。

  5. 使用while循环遍历26个小写字母,如果在对应的索引位置上c1[j]c2[j]相等,则继续检查下一个字母;否则,将stillOK设置为False,跳出循环。

  6. 循环结束后,根据stillOK的值判断两个字符串是否为变位词:

    • stillOK仍为True,说明原字符串s1s2是变位词,返回True。
    • stillOK变为False,则说明它们不是变位词,返回False。
(2)主程序部分
  • 通过input()获取用户输入的两个字符串str1和str2。

  • 调用anagramSolution4(str1, str2)函数判断这两个字符串是否为变位词。

  • 根据函数返回的结果输出相应的信息,如果两个字符串是变位词,则输出"str1 and str2 are anagrams.“,否则输出"str1 and str2 are not anagrams.”。

3、运行程序,查看结果

  • 运行两次程序,第一次是同位词,第二次不是同位词
    在这里插入图片描述

4、计算时间复杂度

  • 此程序的时间复杂度为 O ( n ) \text{O}(n) O(n),其中 n n n表示输入字符串的长度。

    • 在函数anagramSolution4中,首先初始化了两个长度为26的列表c1c2,时间复杂度为 O ( 1 ) \text{O}(1) O(1)

    • 然后对s1中的每个字符进行遍历,计算其在字母表中的位置并增加相应计数,循环次数为n(假设字符串仅包含小写字母),时间复杂度为 O ( n ) \text{O}(n) O(n)

    • 同样地,对s2中的每个字符执行相同的操作,时间复杂度也为 O ( n ) \text{O}(n) O(n)

    • 最后,通过一个while循环比较两个计数列表是否相等,循环最多会进行26次(对于所有可能的小写字母),因此这一部分的时间复杂度是 O ( 1 ) \text{O}(1) O(1)级别的。

  • 综合上述步骤,整个程序的主要时间消耗在于遍历字符串并统计字符出现次数的部分,故总时间复杂度为 O ( n ) \text{O}(n) O(n)。同时,由于空间上只使用了固定大小的计数数组,所以空间复杂度为 O ( 1 ) \text{O}(1) O(1)

(四)相互包含法

1、编写源程序

  • 编写Python程序 - 变位词侦测问题解法04-相互包含法.py
    在这里插入图片描述
"""
功能:变位词侦测问题解法04-相互包含法
作者:华卫
日期:2024年01月13日
"""def anagramSolution5(s1, s2):stillOK = Truefor i in range(len(s1)):if s1[i] not in s2:stillOK = Falsebreakif stillOK:for i in range(len(s2)):if s2[i] not in s1:stillOK = Falsebreakreturn stillOKstr1 = input('Input the first string: ')
str2 = input('Input the second string: ')
if anagramSolution5(str1, str2):print(str1, 'and', str2, 'are anagrams.')
else:print(str1, 'and', str2, 'are not anagrams.')

2、代码解释说明

  • 这段代码实现了一个名为anagramSolution5的函数,用于检测两个输入字符串(s1和s2)是否为变位词。该方法采用了相互包含法,即检查一个字符串中的每个字符是否都出现在另一个字符串中。
(1)函数逻辑解释
  1. 初始化一个布尔变量stillOK为True,表示在没有发现不匹配字符的情况下,两个字符串可能是变位词。

  2. 使用一个for循环遍历字符串s1中的每个字符:

    • 如果当前字符不在字符串s2中,则将stillOK设为False,并使用break语句跳出循环。这意味着s1中存在s2中没有的字符,因此它们不是变位词。
  3. 当遍历完s1后,如果stillOK仍为True,则继续对字符串s2进行相同的操作:

    • 用另一个for循环遍历s2中的每个字符。
    • 如果当前字符不在字符串s1中,则将stillOK设为False,并同样使用break语句跳出循环。这意味着s2中也存在s1中没有的字符,因此它们不是变位词。
  4. 在完成所有检查后,返回stillOK的值。若为True,说明两个字符串是变位词;否则,它们不是变位词。

(2)主程序部分
  • 通过input()获取用户输入的两个字符串str1和str2。

  • 调用anagramSolution5(str1, str2)函数判断这两个字符串是否为变位词。

  • 根据函数返回的结果输出相应的信息,如果两个字符串是变位词,则输出"str1 and str2 are anagrams.“,否则输出"str1 and str2 are not anagrams.”。

3、运行程序,查看结果

  • 运行两次程序,第一次是同位词,第二次不是同位词
    在这里插入图片描述

4、计算时间复杂度

  • 此程序的时间复杂度为 O ( n ∗ m ) \text{O}(n*m) O(nm),其中 n n n m m m分别为输入字符串s1和s2的长度。

    • 在函数anagramSolution5中,首先遍历字符串s1,对每个字符执行一次查找操作(即s1[i] not in s2),这需要在字符串s2中进行线性搜索。最坏情况下,对于每个字符都需要遍历整个s2,因此这部分时间复杂度为 O ( m ) \text{O}(m) O(m)

    • 如果s1中的所有字符都在s2中找到,则继续遍历字符串s2,再次对每个字符执行查找操作(即s2[i] not in s1)。同样地,这部分在最坏情况下也具有 O ( n ) \text{O}(n) O(n)的时间复杂度。

  • 因此,总时间复杂度为这两部分之和,即 O ( n + m ) \text{O}(n+m) O(n+m),由于两者均与输入字符串的长度相关且相互独立,我们可以将其简化为 O ( n ∗ m ) \text{O}(n*m) O(nm),表示随着两个字符串长度同时增加时,程序运行时间的增长趋势。

(五)强力法

  • 强力法采用穷尽所有可能性的方式来处理问题。对于长度为n的字符串s1,全排列得到所有字符串,然后去看s2是否出现在s1全排列后构成的字符串列表里。 T ( n ) = n × ( n − 1 ) × ( n − 2 ) × . . . . × 2 × 1 = n ! T(n)=n\times(n-1)\times(n-2)\times....\times2\times1= n! T(n)=n×(n1)×(n2)×....×2×1=n!, n ! n! n!跑得比 2 n 2^n 2n还要快得多,比如 20 ! = 2432902008176640000 20!= 2432902008176640000 20!=2432902008176640000。如果每秒钟处理一种可能性,那么要花 77 , 146 , 816 , 596 77,146,816,596 77,146,816,596年才能遍历整个列表。显然不是一个好的解决方案。

三、实战总结

  • 实战中,我们运用四种不同策略检测变位词:逐个比较法( O ( n 2 ) \text{O}(n^2) O(n2))、排序比较法( O ( n l o g n ) \text{O}(n log n) O(nlogn))、计数比较法( O ( n ) \text{O}(n) O(n))和相互包含法( O ( n ∗ m ) \text{O}(n*m) O(nm))。其中,计数比较法效率最高,适合大规模字符串;排序比较法则在小规模数据或对内存有限制时适用。通过实践对比,理解并掌握了针对不同场景选择合适算法的重要性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/236783.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式之访问者模式【行为型模式】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档> 学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某…

What does `HandlerInterceptor` do?

HandlerInterceptor 是 SpringMVC 中的一个接口&#xff0c;在SpringMVC应用中它提供了一种实现应用级拦截器的机制。 第1步&#xff1a;引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web<…

基于SSM中小型医院管理系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

【Golang】IEEE754标准二进制字符串转为浮点类型

IEEE754介绍 IEEE 754是一种标准&#xff0c;用于表示和执行浮点数运算的方法。在这个标准中&#xff0c;单精度浮点数使用32位二进制表示&#xff0c;分为三个部分&#xff1a;符号位、指数位和尾数位。 符号位(s)用一个位来表示数的正负&#xff0c;0表示正数&#xff0c;1表…

不带控制器打包exe,转pdf文件时失败的原因

加了注释的两条代码后&#xff0c;控制器会显示一个docx转pdf的进度条。这个进度条需要控制器的实现&#xff0c;如果转exe不带控制器的话&#xff0c;当点击转换为pdf的按钮就会导致程序出错和闪退。 __init__.py文件的入口

【排序算法】一、排序概念和直接插入排序(C/C++)

「前言」文章内容是排序算法之直接插入排序的讲解。&#xff08;所有文章已经分类好&#xff0c;放心食用&#xff09; 「归属专栏」排序算法 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、排序概念的介绍二、直接插入排序2.1 原理2.2 代码实现&#xff08;C/C&#xf…

移除两个双向链表中的重复元素,每个链表中的元素不重复

移除两个双向链表中的重复元素&#xff0c;每个链表中的元素不重复&#xff0c;请给出算法。 ans: 该问题比单向链表要更加复杂一些&#xff0c;必须考虑并更新前向节点的指向情况&#xff0c;具体编码中存在一些难度&#xff0c;加上链表调试相对不容易&#xff0c;因此难度系…

C++标准学习--decltype

decltype / auto 是具有类型推导功能的 类型 描述/占位 符 decltype: 获取对象或表达式的类型auto: 类型自动推导 decltype 可以获取变量类型&#xff0c; &#xff08;并不同于python的type&#xff0c;但python能打印出type获取的名称&#xff0c; C通过typeid实现&#xff…

HTML---JQurey的基本使用

文章目录 目录 文章目录 本章目标 一.JQuery下载安装 二.JQuery概述 JQuery的作用 JQuery的优势 JQUery示例 三.JQuery基础 语法结构 JQuery常用内置函数 总结 本章目标 &#xff08;1&#xff09;能够搭建jQuery开发环境 &#xff08;2&#xff09;使用ready( )方法加…

机器人技能学习-robosuite-0-入门介绍

文章目录 前言模块介绍实战案例1&#xff1a;从 demo 中创建自己的 env案例2&#xff1a;更换属于自己的物体 前言 资料太少、资料太少、资料太少&#xff0c;重要的事说三边&#xff0c;想根据自己实际场景自定义下机器人&#xff0c;结果发现无路可走&#xff0c;鉴于缺少参…

MathType绝对是我数学编辑的首选工具!

去年&#xff0c;微软曾说&#xff0c;要去掉Office里的公式编辑器&#xff0c;建议用户使用MathType编辑公式。目前Office用户可以到微软官网安装MathType的插件&#xff0c;现在免费使用&#xff0c;以后要收费。Word里安装这个插件以后&#xff0c;就会出现MathType的菜单。…

Kafka与RabbitMQ的区别

消息队列介绍 消息队列&#xff08;Message Queue&#xff09;是一种在分布式系统中进行异步通信的机制。它允许一个或多个生产者在发送消息时暂时将消息存储在队列中&#xff0c;然后由一个或多个消费者按顺序读取并处理这些消息。 消息队列具有以下特点&#xff1a; 异步通…

数模学习day11-系统聚类法

本文参考辽宁石油化工大学于晶贤教授的演示文档聚类分析之系统聚类法及其SPSS实现。 目录 1.样品与样品间的距离 2.指标和指标间的“距离” 相关系数 夹角余弦 3.类与类间的距离 &#xff08;1&#xff09;类间距离 &#xff08;2&#xff09;类间距离定义方式 1.最短…

二阶贝塞尔曲线生成弧线

概述 本文分享一个二阶贝塞尔曲线曲线生成弧线的算法。 效果 实现 1. 封装方法 class ArcLine {constructor(from, to, num 100) {this.from from;this.to to;this.num num;return this.getPointList();}getPointList() {const { from, to } thisconst ctrlPoint thi…

我开源了一个 Go 学习仓库

前言 大家好&#xff0c;这里是白泽&#xff0c;我是21年8月接触的 Go 语言&#xff0c;学习 Go 也正好两年半&#xff0c;我决定重启我之前未完成的计划&#xff0c;继续阅读《The Go Programing Language》&#xff0c;一年多前我更新至第五章讲解的时候&#xff0c;工作的忙…

阅读笔记lv.1

阅读笔记 sql中各种 count结论不同存储引擎计算方式区别count() 类型 责任链模式常见场景例子&#xff08;闯关游戏&#xff09; sql中各种 count 结论 innodb count(*) ≈ count(1) > count(主键id) > count(普通索引列) > count(未加索引列)myisam 有专门字段记录…

pytorch学习笔记(十)

一、损失函数 举个例子 比如说根据Loss提供的信息知道&#xff0c;解答题太弱了&#xff0c;需要多训练训练这个模块。 Loss作用&#xff1a;1.算实际输出和目标之间的差距 2.为我们更新输出提供一定的依据&#xff08;反向传播&#xff09; 看官方文档 每个输入输出相减取…

手把手教你学会接口自动化系列九-封装调用之后的代码展示

接上篇: 手把手教你学会接口自动化系列八-将url写在配置文件中,封装调用-CSDN博客 下来把之前写的demo开始改造,将所有的url = http://192.168.0.134:8081的部分,替代了 如下: demo的改造 # !/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 2023/05# @Author …

S1-06 消息队列

消息队列 消息队列是一种在多任务操作系统中广泛使用的通信机制。它可以用于不同任务之间的消息传递&#xff0c;从而实现数据共享和协调处理任务之间的顺序。 消息队列通常具有以下基本特点&#xff1a; 消息队列的大小有限&#xff1a;消息队列被设计为一种缓冲区&#xff…

【软件测试】路径覆盖

题目要求&#xff1a; a) 流程图如下&#xff1a; b) Consider test cases ti (n 3) and t2 ( n 5). Although these tour the same prime paths in printPrime(), they dont necessarily find the same faults. Design a simple fault that t2 would be more lik…