判断两字符串是否互为变形词Python版
来源:互联网 发布:3tier数据 编辑:程序博客网 时间:2024/06/08 07:11
题目:
给定两个字符串,str1,str2,判断两个字符串中出现的字符是否全部种类一样,数量一样。
例如:
str1 = “apple”, str2 = “paple”, 返回 True;
str1 = “pear”, str2 = “bears”, 返回 False。
Python版代码如下,我自己手写:
def is_deformation(str1, str2): if str1 is None or str2 is None or len(str1) != len(str2): return False i, map = 0, [0] while i <= 256: map.append(0) i += 1 for i in range(0, len(str1)): map[ord(str1[i])] += 1 for i in range(0, len(str2)): if map[ord(str2[i])] == 0: return False return True
解题思路:
1、首先判断字符串长度是否一致,然后遍历str1,str2,假使字符数量为ASCII字符256个。一旦map中出现-1,返回报错。最后不需要再次遍历map中是否为全0,直接返回 True。
2、如果字符类型大大多于256,要采用哈希表。
3、时间复杂度为两次遍历 str1,所以为 o(len(str1)),空间复杂度,申请了一个整形变量 i,一个map数组,所以空间复杂度为 o(len(map))。
体会
1、Python写算法感觉不如C好,Python里自带的 列表数据类型不方便初始化空数组,非得来一个循环才能解决问题。增加了时间复杂度。
2、Python的数组就是个链表,而非数组。灵活的链表结构,可以在此基础上构建树结构。
如果有更 pythonic 的写法,请留言我。
阅读全文
0 0
- 判断两字符串是否互为变形词Python版
- 判断两个字符串是否互为变形词
- 判断两个字符串是否互为变形词
- 判断两个字符串是否互为变形词
- 判断两个字符串是否互为变形词
- 判断两个字符串是否互为变形词
- 判断两个字符串是否互为变形词
- 判断两个字符串是否互为变形词
- C++判断字符串是否互为变形词
- 判断两个字符串是否互为变形词
- 判断两个字符串是否互为旋转词 Python版
- 【字符串】判断两字符串是否互为旋转词?
- 5.1判断两个字符串是否互为变形词(输入流)
- [编程之美-09]判断两个字符串是否互为变形词
- 判断两个字符串是否互为变位词
- 判断两个字符串是否互为旋转词
- 判断两个字符串是否互为旋转词
- 判断两个字符串是否互为旋转词
- 栈
- BZOJ 1416: [NOI2006]神奇的口袋 高精度
- js判断文档是否存在
- Java(7-4)
- Java8 Lambda简单使用
- 判断两字符串是否互为变形词Python版
- C语言-链表建立、合并、打印
- 17112
- Query 效果函数动画
- Selenium学习笔记(FireFox插件Selenium IDE)
- Java后端WebSocket的Tomcat实现
- Python笔记—网络编程
- 找到工作了
- 里程碑