问题: 给定两个字符串str1和str2,如果str1和str2中出现的字符种类一样并且每种字符出现的次数也一样,那么str1与str2互为变形词。请实现函数判断两个字符串是否互为变形词。

举例:

  str1 = “123”,str2 = “231”,返回True 
  str1 = “123”,str2 = “2331”,返回False

基本思路:

如果两个字符串的长度不相同,直接返回False

假设出现的字符的编码值在0~255之间,即是ASCII编码,那么先申请一个长度为256的整型数组array,arr[a] = b,表示字符a出现的次数是b,依次遍历字符串str1,统计每种字符出现的数量,相当于统计每种字符的词频。

遍历字符串str2,每遍历到一个字符都在array数组中把词频减1,如果减少之后的值小于0,直接返回False。如果遍历完str2,array中的值也没有成为负数,则返回True。

为什么只考虑词频最后是否有负数?因为如果最后有的词频为正数,说明str1的长度一定大于str2,这种情况在步骤一的时候就已经剔除了。

如果字符的范围不在0~255,则可以利用哈希表来代替数组。

def isDeformation(str1,str2):"""列表实现方式"""if str1 == None or str2 == None or len(str1) != len(str2):return Falsechas = [0 for i in range(256)]for item in str1:chas[ord(str1)] +=1for item in str2:chas[ord(str1)] -=1if chas[ord(str1)] < 0:return Falsereturn Truedef isDeformation(str1,str2):"""字典实现方式"""if str1 == None or str2 == None or len(str1) != len(str2):return Falsechas = dict()for item in str1:if item not in chas:chas[item] = 1else:chas[item] = chas[item] + 1for item in str2:if item not in chas:return Falseelse:chas[item] = chas[item] - 1if chas[item] < 0:return Falsereturn true

判断两个字符串是否是变形词相关推荐

  1. 判断两个字符串是否互为变形词

    判断两个字符串是否互为变形词 [题目] 给定两个字符串str1和str2,如果str1和str2中出现的字符种类一样且每种字符出现的次数也一样,那么str1和str2互为变形词.请实现函数判断两个字符 ...

  2. Java判断两个字符串是否互为变形词

    判断两个字符串是否互为变形词 [题目] 给定两个字符串 str I 和 str2, 如果 strl 和 str2 中出现的字符种类一样且每种字符出现的次数也 一样,那么 str l 与 str2 互为 ...

  3. 字符串题目---2判断两个字符串是否为变形词

    题目描述 给定两个字符串str1和str2,如果str1和str2中出现的字符种类出现的一样且每种字符出现的次数也一样,那么str1和str2互为变形词.请判断str1和str2是否为变形词 输入描述 ...

  4. 浙大python判断两个字符串是否为变位词_算法2----------变位词

    1.背景: 变位词指的是一个单词可以通过改变其他单词中字母的顺序来得到,也叫做兄弟单词,如army->mary. 题1:判断两个字符串s1和s2是否为变位词. 经典的字符串变位词检测问题是比较不 ...

  5. 7-20 判断两个字符串是否为变位词 (10 分)如果一个字符串是 另一个字符串的重新排列组合,那么这两个字符串互为变位词。比如,”heart”与”earth”互为变位 词,”Mary”与”arMy

    7-20 判断两个字符串是否为变位词 (10 分) 如果一个字符串是 另一个字符串的重新排列组合,那么这两个字符串互为变位词.比如,"heart"与"earth" ...

  6. 字符串问题----判断两个字符串是否互为旋转词

    判断两个字符串是否互为旋转词 如果一个字符串str,把字符串str前面的任意部分挪到后面形成的字符串叫做str的旋转词.给定两个字符串,判断是否互为旋转词.比如 a="abcd", ...

  7. 浙大python判断两个字符串是否为变位词_python数据结构与算法 变位词

    变位词 问题简述 "变位词"判断问题:所谓 "变位词" 是指两个词之间存在组成字母的重新排列关系,例如 Heart 和 Earth,python 和 typho ...

  8. 判断两个字符串是否互为变位词

    看了个算法题目,觉得有趣,就换成了java版本的. 原文地址:blog.csdn.net/ns_code/article/details/21409663 题目: Write a method to ...

  9. 判断两个字符串是否为旋转词

    题目:如果一个字符str,把字符str前面任意的部分挪到后面形成的字符叫做str的旋转词.比如str = "12345",str的旋转词有 "12345", & ...

最新文章

  1. 大学计算机课英语心得体会,关于计算机网络辅助大学英语教学的思考学习心得...
  2. im4java转换图片格式_ImageMagick和im4java处理图片[转]
  3. FreeBSD 安装过程
  4. java gettext用法_Java Context.getText方法代码示例
  5. session喜欢丢值且占内存,Cookis不安全,用什么可以代替呢?
  6. group by 和 left join 哪个慢_手机自带内存和扩展内存一样吗?哪个更好?
  7. 在Winform程序中设置管理员权限及为用户组添加写入权限
  8. VS2013提示错误应输入表达式
  9. Mr.J-- HTTP学习笔记(九)-- Web机器人
  10. Cron 触发器及相关内容 (第一部分)
  11. 深入理解 ViewState
  12. 《软件测试》实验一:测试入门
  13. 快速测试UTF8编码的文件是不是加了BOM,不限PHP
  14. 【行业聚焦】畅捷通用自然语言技术颠覆企业应用人机交互模式!
  15. 青年大学习简单窗口使用教程
  16. Debug No5基础光照
  17. python蓝牙连接测试_基于python实现蓝牙通信代码实例
  18. 水溶性CY3.5-马来酰亚胺,Sulfo-Cyanine3.5 maleimide
  19. Windows Server 2016 基本设置
  20. 2021年10月云短信报告出炉,腾讯云蝉联冠军

热门文章

  1. fragment中的replace和hide与shou方法的区别
  2. 【STSRM13】绵津见
  3. jsp+urlrewrite实现html分页简单粗暴实现
  4. 机器学习有很多关于核函数的说法,核函数的定义和作用是什么?
  5. 51Nod1916 购物
  6. 燕赵志愿云如何认证_如何成为中国志愿服务网注册志愿者?操作秘籍!
  7. springboot第十讲
  8. 店宝宝电脑版_起名字 测名字神器 电脑安卓全有了
  9. opencv 图片边缘渐变_基于OpenCV的图像卡通化
  10. 服务器e5系列和e5v4系列,“芯”力量:四款至强E5 v4双路服务器横评