Ruby 对包含字符串和整数的字符串进行排序,使字符串按字母顺序排列,所有整数按数字顺序排列
样本输入:“汽车卡车8 4总线6 1” 样本输出:“客车1 4卡车6 8” 如果字符串中的第n个元素是整数,则它必须保持为整数, 如果它是一个词,那么它必须是一个词 有没有更优雅、更有效的方法?下面是我的ruby代码。我正在寻找更高效的代码(不需要使用ruby)Ruby 对包含字符串和整数的字符串进行排序,使字符串按字母顺序排列,所有整数按数字顺序排列,ruby,algorithm,sorting,Ruby,Algorithm,Sorting,样本输入:“汽车卡车8 4总线6 1” 样本输出:“客车1 4卡车6 8” 如果字符串中的第n个元素是整数,则它必须保持为整数, 如果它是一个词,那么它必须是一个词 有没有更优雅、更有效的方法?下面是我的ruby代码。我正在寻找更高效的代码(不需要使用ruby) 放入“输入”: inp=get inp_ari=inp.split(“”) a=inp_ary.group_by{i | i=~/\d/} sort\u words=a[nil]。排序 sort\u integer=a[0]。排序 索引
放入“输入”:
inp=get
inp_ari=inp.split(“”)
a=inp_ary.group_by{i | i=~/\d/}
sort\u words=a[nil]。排序
sort\u integer=a[0]。排序
索引_单词=[]
索引_整数=[]
每一个带有索引do | e,i的|
如果e=~/\d/
因为C++是最有效的语言?更有趣的是为什么truck介于4和6之间。整数相对于单词应该处于什么位置?i、 为什么4在car之后而在truck之前?我编辑了这个问题并添加了整数和字符串位置的条件。如果列表中的第n个元素是整数,则它必须保持整数,如果它是单词,它必须保持一个单词“因为C++是有效率的语言吗?”更有趣的是为什么truck介于4和6之间。整数相对于单词应该处于什么位置?i、 为什么4在car之后而在truck之前?我编辑了这个问题并添加了整数和字符串位置的条件。如果列表中的第n个元素是整数,则它必须保持为整数;如果它是单词,则它必须保持为单词
puts "Enter Input:"
inp = gets
inp_ary=inp.split(" ")
a=inp_ary.group_by{|i| i=~ /\d/}
sort_words = a[nil].sort
sort_integer = a[0].sort
index_words=[]
index_integer=[]
inp_ary.each_with_index do |e,i|
if e =~ /\d/
index_integer << i
else
index_words << i
end
end
final = []
sorted = sort_words + sort_integer
index_integer.each_with_index do |e,i|
final[e] = sort_integer[i]
end
index_words.each_with_index do |e,i|
final[e] = sort_words[i]
end
puts "Sorted Output: "
puts final.join(" ")
s = "car truck 8 4 bus 6 1"
tokens = s.split
numbers, words = tokens.partition{|t| t =~ /^\d+$/}
numbers.map!(&:to_i).sort!
words.sort!
result = tokens.map{|t| (t =~ /^\d+$/ ? numbers : words).shift}.join(' ')
p result
#=> "bus car 1 4 truck 6 8"