问题:有一个字符串的数组ABC,BCD,DEG。ABC和BCD之间的区别是相同的,但是在DEG中,它不返回该字符串。
import string
arr = ['ABC','BCD','DEG']
alphabet = string.ascii_uppercase
for phrase in arr:
for letter in phrase:大家好。昨天我为极客们遇到了一个关于极客的问题。我一直在努力想出解决办法,但没有成功。我是Python的新手,我很感激在这方面能得到的任何帮助。
我的思考过程如下:
对于数组中的每个元素,在第一个/第二个字母的字母索引之间迭代字母returned.
发布于 2022-09-28 11:45:43
解决方案:
arr = ['ABC','BCD','DEG']
for phrase in arr:
chars = [ord(letter) for letter in phrase]
deltas = [chars[i+1] - chars[i] for i in range(len(chars)-1)]
if len(set(deltas))!=1:
print(phrase)退出:
DEG解释:
chars是包含每个短语中每个字符的Unicode点代码值的列表。对于短语"ABC",这是[65, 66, 67],而对于短语"DEG",它是[68, 69, 71]。
deltas是短语中每个相邻字母对之间差异的列表。对于"ABC",这是[1, 1],而对于"DEG",这是[1, 2]。
set(deltas)在deltas中给出了唯一的值,"ABC"是{1},"DEG"是{1, 2}。通过检查len(set(deltas))是否等于1,您只返回具有不同三角洲的短语。
https://stackoverflow.com/questions/73876840
复制相似问题