我这里有笔试,这是指示。
编写一个程序,打印出作为字谜的单词组。 字谜是在它们中具有完全相同字母的单词但在a中 不同的顺序。您的输出应如下所示:
["demo", "dome", "mode"]
["neon", "none"]
(等)
以下是解决方案:
words = ['demo', 'none', 'tied', 'evil', 'dome', 'mode', 'live',
'fowl', 'veil', 'wolf', 'diet', 'vile', 'edit', 'tide',
'flow', 'neon']
result = {}
words.each do |word|
key = word.split('').sort.join
if result.has_key?(key)
result[key].push(word)
else
result[key] = [word]
end
end
result.each do |k, v|
puts "------"
p v
end
我一直在尝试理解ruby代码解决方案,但无法轻易掌握它。我的一个问题是如果它没有密钥或任何元素包含它,你如何测试result
哈希。另一件事。join
和。sort
如何处理此代码。
我真的很困惑这一切都是通过答案。有人可以在一个外行人的术语中逐行解释这个代码,像我这样的假人的初学者可以理解吗?
答案 0 :(得分:7)
我会这样做:
ng-if
答案 1 :(得分:2)
我会为你解释代码。
['m', 'o', 'd', 'e']
这将从字符串创建字符数组,按字母顺序对字母进行排序,然后将字符连接到新字符串中。这样就创建了哈希的密钥。
例如,单词“mode”将转换为数组['d', 'e', 'm', 'o']
,而不是排序if result.has_key?(key)
result[key].push(word)
else
result[key] = [word]
end
,因此最终的键字符串将为“demo”。这样,单词“mode”和“demo”将在哈希中具有相同的键。
web.xml
如果条件的分支检查哈希是否具有给定的密钥,如果哈希具有给定的密钥,则将该字添加到该数组。否则它会将只包含单词的数组分配给键。