abioqian0,My solutions
本周的最后一刻提交,所以这个博客将比平常更统治。
任务1:最小索引总和
任务
您有两个字符串。
编写一个脚本,以找出具有最小索引总和的给定两个阵列中的所有常见字符串。如果找不到普通字符串,则返回一个空列表。
我的解决方案
这是可能不需要优化解决方案的任务之一。我敢肯定,一些聪明的团队普华永道人有关于最佳解决方案的博客文章。
对于此任务,我从前两个参数中提取类似单词的字符串,并将其称为first_list
和second_list
(是的,真的想象中的列表名称!)
index_sum
设置为一个比组合列表的长度多。这样可以确保如果我们确实找到解决方案,则index_sum
将较低。
i然后在first_list
上迭代,i1
为索引位置,而w
是该位置的单词。然后,我在second_list
中检索了该单词的位置。如果出现,我会计算位置的总和,如果它的相同或小于当前的index_sum
值。
python似乎没有内置的命令来获取与标准匹配的列表中的项目索引(在这种情况下为单词),因此我创建了一个称为find_index_in_list
的函数来执行此操作。公平地说,perl也不是list :: moreutils做我们想要的。
例子
$ ./ch-1.py "Perl Raku Love" "Raku Perl Like"
("Perl", "Raku")
$ ./ch-1.py "A B C" "D E F"
()
$ ./ch-1.py "A B C" "C A B"
("A")
任务2:重复和丢失
任务
您有一个序列的整数,其中一个丢失和一个重复。
编写一个脚本以在给定数组中找到副本和缺少整数。返回-1如果没有找到。
为了完成此任务,让我们假设数组包含不超过一个重复和缺失。
我的解决方案
这些示例没有给我们指示没有重复的预期输出是什么,但是数字丢失,就像[1, 2, 33, 4]
一样。在这种情况下,输出中的第一个值将为空白。
对于此任务,我从数组的长度迭代1,并计算具有该值的列表中的项目数。如果没有,我设置了missing
值。如果有超过1,我设置了duplicate
值。
最后,我按照示例中提供的输出打印。
例子
$ ./ch-2.py 1 2 2 4
(2, 3)
$ ./ch-2.py 1 2 3 4
-1
$ ./ch-2.py 1 2 3 3
(3, 4)
$ ./ch-2.py 1 2 3 33
(, 4)