最长无重复子字符串练习题
任务描述:对于一个字符串,设计一个算法,找到字符串的最长无重复子串长度
输入:”aabcb”, 5
返回:3
思路:先从第一个字符开始往后遍历,当遇到第一个重复字符时停止遍历,记录此时字符串长度。然后从第二个字符开始往后遍历,遇到重复字符时停止遍历,记录此时字符串长度,一直到最后从最后一个字符遍历。返回所有记录长度中最大的一个值。
Python实现
1 | class DistinctSubstring: |
任务描述:对于一个字符串,设计一个算法,找到字符串的最长无重复子串长度
输入:”aabcb”, 5
返回:3
思路:先从第一个字符开始往后遍历,当遇到第一个重复字符时停止遍历,记录此时字符串长度。然后从第二个字符开始往后遍历,遇到重复字符时停止遍历,记录此时字符串长度,一直到最后从最后一个字符遍历。返回所有记录长度中最大的一个值。
Python实现
1 | class DistinctSubstring: |
任务描述:对于两棵彼此独立的二叉树A和B,请编写算法,检查A中是否存在一颗子树与B树的拓扑结构完全相同。给定两棵二叉树的头结点A和B,请返回一个bool值,代表A中是否存在一棵同构于B的子树。
思路:可以先将二叉树A与二叉树B序列化,转化为字符串,若树B是树A的子树的话B序列化后的字符串则是A字符串的子字符串。python中的in语法可以方便做到这一点。
Python实现
1 | # class TreeNode: |
任务描述:有一课二叉树,设计一个算法,按照层次打印这棵二叉树。给定二叉树的根节点root,返回打印结果数组,结果按照每一层一个数组进行储存,数组排列顺序按照从上到下,数组内元素顺序按从左往右。
Python实现
1 | # class TreeNode: |
任务描述:对于两个字符串A和B,如果A和B中出现的字符种类相同且每种字符出现的次数相同,则A和B互为变形词。设计一个算法,检查两个给定字符串是否互为变形词。
输入:”abc”, 3, “bca”, 3
返回: true
思路:利用python内建字典数据结构给字符串A和B分别建立自己的空字典,分别遍历他们的字符,用字典的key保存出现过的字符,用字典对应的value保存该字符出现的次数。若A,B分别遍历完后得到的字典相同,则A和B互为变形词。
1 | class Transform: |
查询资料后发现Python内建模块中有相关计数器的实现
1 | >>> from collections import Counter |
最近希望能够弥补一下数据结构与算法相关基础知识,便先尝试用python去实现常见的几种基础排序算法,实现代码归纳如下。
1 | def bubbleSort(nums): |
1 | def insert_sorted(a_list): |
1 | def mergeSort(A, n): |
1 | def quickSort(aList): |
1 | d = {"x":1, "y":2, "z":3} |
1 | names = ["ych", "cpp", "ws"] |
1 | for index, item in enumerate(some_list): |
最近在写一个拉钩网招聘信息的简单爬虫。爬取到了信息之后希望能够储存在excel文件当中方便查看。谷歌了一会后找到了一个相关模块xlwt,用来将python数据写入外部excel文件,记录下用到的基础功能。
import xlwt
myfile = xlwt.Workbook()
sheet = myfile.add_sheet("sheet1", cell_overwrite_ok=True)
在myfile文件中新建一个叫”sheet1”的新sheet,后面的cell_overwrite_ok
参数表示允许覆盖写入。即sheet1当中加入已经存在内容,会覆盖原来的内容写入。
sheet.write(0, 0, "test")
表示往第0行第0列写入“test”字符串
myfile.save("filename.xls")
最后一定记得关闭文件完成写入过程
最近几天在学习爬虫,想把拉钩网上面关于python的招聘信息全部爬下来方便查看。先去github上面搜索了下其他人的代码,很多代码都用到了多线程模块,目前知识储备还不够,看的有些吃力。于是便准备自己写一个简单的爬虫当作练手。在写的过程中,学习了requests模块,重温了beautifulsoup模块的知识。
Requests模块的基本用法
get请求
>>> r = requests.get(url)
Post请求
>>> r = requests.post(url)
>>> payload = {"key1": "value1", "key2": "value2"}
>>> r = request.get(url, params = payload)
>>> r = requests.get(url)
>>> r.text
Requests会自动解码来自服务器的内容。大多数unicode字符集都能被无缝地解码。
>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.post("http://httpbin.org/post", data=payload)
>>> print r.text
1 | import java.uti.Scanner; |
Java 中数组操作需要四个步骤:
1.声明数组
1 | int[] scores; //声明一个类型为整型的数组 |
2.分配空间
1 | scores = new int[5]; //长度为5的整数型数组 |
或者将两个步骤合并,在声明数组的同时为他们分配空间
1 | int[] scores = new int[5]; |
3.赋值
1 | scores[0] = 89; |
通过下标直接访问
直接将三步合并操作
1 | int [] scores = {78, 91, 84, 68}; |
以下笔记部分参考廖雪峰的博客
Python的内置装饰器@property负责把一个方法变成属性调用的
1 | class Student(object): |
1 | >>> s = Student() |