入门级编程通关练习题 #9 – 匹配字符串

给定一个字符串,里面的字符都是由括号组成:()、[ ]、{ }。检查这个字符里面的括号是否匹配,譬如字符串 ”[ ( ) ] { }“ 是匹配的,而字符串”] [ “是不匹配的。 输入样例: "[({})](]" 输出样例: False 算法思路: 这是典型使用stack数据类型的练习题。每次拿到一个括号,可以和栈顶的字符进行匹配。能够匹配的一对括号就可以消去,如果不能匹配或者栈内为空则压栈。最后栈内如果还有剩余括号表明该字符串里面的括号不匹配,如果为空则表明匹配。

入门级编程通关练习题 #7 – Anagram字谜

两个字符串如果都是由同样的字母组成的,就可以称为一对Anagrams,譬如"aabbc" 和 ”cabab“就是如此。 给定一个目标字符串,和一组字符串数列,用目标字符串去检查数列里的每一个字符串,看看是否和目标字符串是Anagram字谜。 输入样例: word = "data", words = ["tdaa", "atdt", "dddaa", "daata", "aadt", "ddta", "taad"] 输出样例: ['tdaa', 'aadt', 'taad'] 算法思路 方法一:使用函数 sorted 加列表推导式。方法二:使用函数 filter 加匿名函数。方法三:暴力破解,使用for循环来逐一对比。

入门级编程通关练习题 #6 – 字符回音

给定一个字符串,从第一个字母开始,每个字母重复的次数和它的位置相同,重复的字母第一个大写,后面小写,不同字母之间用 - 分隔开。 输入样例: abcdefg 输出样例: A-Bb-Ccc-Dddd-Eeeee-Ffffff-Ggggggg 算法思路: 方法一:使用字符串函数 join,lower,upper 加列表推导式。方法二:使用字符串函数 join,title 加列表推导式。方法三:暴力破解,使用for循环逐一处理。

入门级编程通关练习题 #5 – 倍数之和

10以下的数字里是3或5的倍数的数字为:3,5,6,9,它们加起来等于23。给定一个数字N,N为大于10的整数,计算小于N的数字里,3或5的倍数的数字之和。 输入样例: N = 100 输出样例: 2318 算法思路: 方法一:使用函数 sum 加列表推导式。方法二:使用函数 sum 加list 和set。方法三:暴力破解,使用for循环来逐个检查。

入门级编程通关练习题 #4 – 二进制位计数

实现一个函数,接受一个正整数作为参数,返回该数字二进制中等于1的位数之和。 输入样例: 3344 输出样例: 4 输入样例的数字 3344 用二进制来表示是:110100010000,里面总共有四个 1,所以返回结果为 4。 算法思路: 方法一:使用字符串 format函数和 count函数来统计 bit 为1的数量。方法二:使用二进制操作符 & 和 >> 来查找。方法三:暴力破解,使用for循环然后逐一对比每个字符。

入门级编程通关练习题 #3 – 字符偏差

给定一个字符串,检查里面的字符有多少不在小写字母a-m之间,输出结果为字符串格式:x / y。x为不是小写字母a到m的数量,y为字符串长度。 输入样例: atddaaaazxbbbbyyhwawiwjjjwwmz 输出样例: 11/29 算法思路: 方法一:使用函数 sub() 把a-m之间的字母去掉,剩下的字母都是不符合要求的。方法二:使用列表推导式和操作符IN来检查不符合要求的字母。方法三:使用字符串函数 str.translate() 来把a-m之间的字母去掉。方法四:使用正则表达式,譬如函数 re.findall()来检查不符合要求的字母。

入门级编程通关练习题 #2 – 银行卡密码校验

假定一张银行卡的密码必须是四位或者六位数字,给定一个密码,检查它是否符合要求。如果是四位或者六位数字,返回 True,否则返回 False。 输入样例: a123 输出样例: False 算法思路: 首先检查输入数据的长度是否是4或者6,不符合则返回 False。然后用函数 str.isdigit()来检查字符串是否都是数字。

入门级编程通关练习题 #1 – 二进制加法

实现一个函数,将两个数字A,B 相加并以二进制形式返回其和,转换可以在加法之前或之后进行。返回的二进制数据类型为字符串。 输入范例: A= 6, B= 8 输出范例: “1110” 说明:6 + 8 = 14,十进制数字14的二进制格式为 1110。 算法思路: 可以使用函数 bin()得到数字的二进制格式,然后做字符串切片去掉前缀"0b"。