判断两个字符串是否是变形词
问题: 给定两个字符串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
判断两个字符串是否是变形词相关推荐
- 判断两个字符串是否互为变形词
判断两个字符串是否互为变形词 [题目] 给定两个字符串str1和str2,如果str1和str2中出现的字符种类一样且每种字符出现的次数也一样,那么str1和str2互为变形词.请实现函数判断两个字符 ...
- Java判断两个字符串是否互为变形词
判断两个字符串是否互为变形词 [题目] 给定两个字符串 str I 和 str2, 如果 strl 和 str2 中出现的字符种类一样且每种字符出现的次数也 一样,那么 str l 与 str2 互为 ...
- 字符串题目---2判断两个字符串是否为变形词
题目描述 给定两个字符串str1和str2,如果str1和str2中出现的字符种类出现的一样且每种字符出现的次数也一样,那么str1和str2互为变形词.请判断str1和str2是否为变形词 输入描述 ...
- 浙大python判断两个字符串是否为变位词_算法2----------变位词
1.背景: 变位词指的是一个单词可以通过改变其他单词中字母的顺序来得到,也叫做兄弟单词,如army->mary. 题1:判断两个字符串s1和s2是否为变位词. 经典的字符串变位词检测问题是比较不 ...
- 7-20 判断两个字符串是否为变位词 (10 分)如果一个字符串是 另一个字符串的重新排列组合,那么这两个字符串互为变位词。比如,”heart”与”earth”互为变位 词,”Mary”与”arMy
7-20 判断两个字符串是否为变位词 (10 分) 如果一个字符串是 另一个字符串的重新排列组合,那么这两个字符串互为变位词.比如,"heart"与"earth" ...
- 字符串问题----判断两个字符串是否互为旋转词
判断两个字符串是否互为旋转词 如果一个字符串str,把字符串str前面的任意部分挪到后面形成的字符串叫做str的旋转词.给定两个字符串,判断是否互为旋转词.比如 a="abcd", ...
- 浙大python判断两个字符串是否为变位词_python数据结构与算法 变位词
变位词 问题简述 "变位词"判断问题:所谓 "变位词" 是指两个词之间存在组成字母的重新排列关系,例如 Heart 和 Earth,python 和 typho ...
- 判断两个字符串是否互为变位词
看了个算法题目,觉得有趣,就换成了java版本的. 原文地址:blog.csdn.net/ns_code/article/details/21409663 题目: Write a method to ...
- 判断两个字符串是否为旋转词
题目:如果一个字符str,把字符str前面任意的部分挪到后面形成的字符叫做str的旋转词.比如str = "12345",str的旋转词有 "12345", & ...
最新文章
- 大学计算机课英语心得体会,关于计算机网络辅助大学英语教学的思考学习心得...
- im4java转换图片格式_ImageMagick和im4java处理图片[转]
- FreeBSD 安装过程
- java gettext用法_Java Context.getText方法代码示例
- session喜欢丢值且占内存,Cookis不安全,用什么可以代替呢?
- group by 和 left join 哪个慢_手机自带内存和扩展内存一样吗?哪个更好?
- 在Winform程序中设置管理员权限及为用户组添加写入权限
- VS2013提示错误应输入表达式
- Mr.J-- HTTP学习笔记(九)-- Web机器人
- Cron 触发器及相关内容 (第一部分)
- 深入理解 ViewState
- 《软件测试》实验一:测试入门
- 快速测试UTF8编码的文件是不是加了BOM,不限PHP
- 【行业聚焦】畅捷通用自然语言技术颠覆企业应用人机交互模式!
- 青年大学习简单窗口使用教程
- Debug No5基础光照
- python蓝牙连接测试_基于python实现蓝牙通信代码实例
- 水溶性CY3.5-马来酰亚胺,Sulfo-Cyanine3.5 maleimide
- Windows Server 2016 基本设置
- 2021年10月云短信报告出炉,腾讯云蝉联冠军
热门文章
- fragment中的replace和hide与shou方法的区别
- 【STSRM13】绵津见
- jsp+urlrewrite实现html分页简单粗暴实现
- 机器学习有很多关于核函数的说法,核函数的定义和作用是什么?
- 51Nod1916 购物
- 燕赵志愿云如何认证_如何成为中国志愿服务网注册志愿者?操作秘籍!
- springboot第十讲
- 店宝宝电脑版_起名字 测名字神器 电脑安卓全有了
- opencv 图片边缘渐变_基于OpenCV的图像卡通化
- 服务器e5系列和e5v4系列,“芯”力量:四款至强E5 v4双路服务器横评