【发布时间】:2014-01-21 18:55:10
【问题描述】:
我正在做以下练习:
编写一个方法ovd(str),它接受一串小写单词并返回一个字符串,其中仅包含按字母顺序包含所有元音(不包括“y”)的单词。元音可以重复("afoot" 是一个有序的元音词)。如果单词不是按字母顺序,则该方法不会返回该单词。
示例输出为:
ovd("这是对元音排序系统的测试") #output=> "这是对系统的测试"
ovd("复杂") #output=> ""
下面是我编写的可以完成这项工作的代码,但我正在寻找是否有更短更聪明的方法来做到这一点。我的解决方案似乎太长了。在此先感谢您的帮助。
def ovd?(str)
u=[]
k=str.split("")
v=["a","e","i","o","u"]
w=k.each_index.select{|i| v.include? k[i]}
r={}
for i in 0..v.length-1
r[v[i]]=i+1
end
w.each do |s|
u<<r[k[s]]
end
if u.sort==u
true
else
false
end
end
def ovd(phrase)
l=[]
b=phrase.split(" ")
b.each do |d|
if ovd?(d)==true
l<<d
end
end
p l.join(" ")
end
【问题讨论】:
标签: ruby arrays string sorting