初级编程通关练习题 #3 – 数列区间

给定一组整数数列,返回用逗号分隔这些数字的字符串格式,如果有连续三个数字或以上的区间,则用 - 代替中间的数字,譬如 1,2,3,4 替换为 1-4。 输入样例: [-5, -3, -2, -1, 0, 3, 15, 16, 18, 19, 20, 21] 输出样例: "-5,-3-0,3,15,16,18-21" 算法思路: 可以使用两个指针 prev 和 curr,prev为区间头,curr为区间尾,根据当前数值来决定如何把 prev 和 curr格式成字符串。prev 和…

初级编程通关练习题 #2 – 时间格式

给定一个整数N代表秒数,把它按照下面的规则转换成时间字符串:如果秒数为零,则返回字符串"now"。如果秒数大于零,则返回用年、日、时、分、秒表达的时间字符串,中间用逗号分隔,最后两个时间段用 and 连接。譬如秒数 123456需要转换为:1 day, 10 hours, 17 minutes and 36 seconds。 输入样例: 987654321 输出样例: 31 years, 116 days, 4 hours, 25 minutes and 21 seconds 算法思路: 首先用每年的总秒数整除输入数值得到年数,然后用同样的总秒数mod输入数值得到剩余秒数。然后用每天的总秒数整除剩余秒数得到天数,再用这个总秒数mod剩余秒数得到下一步的剩余秒数。接着用同样的逻辑操作剩余秒数得到小时数、分钟数,最后剩下的就是秒数。根据上面计算出来的年数、天数、小时数、分钟数和秒数来格式化一个时间字符串并返回。

初级编程通关练习题 #1 – 矩阵回形遍历

给定一个NxN二维数组,返回从最外层元素到中间元素顺时针排列的数组元素,如下图所示。 上面这个5x5的矩阵,按照回形遍历的方法得到的结果为:1,2,3,4,5,10,15,20,25,24,23,22,21,16,11,6,7,8,9,14,19,18,17,12,13。 输入样例: array = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]] 输出样例: [1, 2, 3, 4, 8, 12, 16, 15,…

入门级编程通关练习题 #16 – 修改字符串

给定一个字符串,把里面的每个单词首字母放到单词最后,然后加上"cga",如果是标点符号则保持不变。 输入样例: msg = "It is important to learn algorithm !" 输出样例: "tIcga sicga mportanticga otcga earnlcga lgorithmacga !" 算法思路: 检查一个单词是否有标点符号,可以用函数 str.isalnum() 或者函数 str.isalpha()。

入门级编程通关练习题 #15 – 地名格式化

给定一组地名的字典列表,创建一个地名字符串,每个地名之间用逗号隔开,最后两个地名用&符合隔开。 输入样例: arr = [{'city': 'Folsom'}, {'city': 'Bend'}, {'city': 'Seaside'}] 输出样例: "Folsom, Bend & Seaside" 算法思路: 使用 str.join() 函数配合列表推导式来创建字符串,最后一个&符号需要做特别处理。

入门级编程通关练习题 #14 – Pangram 全字母短句

全字母短句 (Pangram) 是一句话里面使用了所有26个英文字母,每个字母最少使用一次。最著名的Pangram是下面这句话:"The quick brown fox jumps over the lazy dog"。 给定一句话,判断它是否是全字母短句。 输入样例: "Waltz, bad nymph, for quick jigs vex."  输出样例: True 算法思路: 可以使用两个set来做比较大小,一个set是所有26个字母,另外一个set是当前字符串。当前字符串的set如果大于26个字母的set,则表明是 Pangram。第二种方法可以使用 all 函数加列表推导式,检查26个字母里的每一个是否都在当前字符串里面。

入门级编程通关练习题 #13 – 数组最大值

给定一个整数数列,包括正整数和负整数,计算该数列里面的数值连续相加可以达到的最大值。 输入样例: [2, -2, 1, -3, 4, -1, 2, 1, -5, 6] 输出样例: 7 上面的样例数列中,最大值是 4 - 1 + 2 + 1 -5 + 6 = 7 算法思路: 需要使用两个最大值,一个指向当前最大值,一个指向全部最大值,每次检查一个数值后更新当前最大值,如果当前最大值为负数则重置为零。然后和全部最大值做比较,取两者max来更新全部最大值。

入门级编程通关练习题 #12 – 字符积分

给定一给字符串里面包含一组全部小写的词汇,按照下面的规则计算每个词汇的积分:字母 a 为1分, 字母 b 为2分, 字母 c 为3分...,以此类推,返回得分最高的词汇。如果两个词汇得分相同,返回位置靠前的词汇。 输入样例: "seattle is a great place to visit during the summer time." 输出样例: "summer" 算法思路: 可以使用 max 函数的如下格式:max(iterable[, default=obj, key=func]) ->…