Ruby [讨论] reverse 一个字符串的顺序.

zw963 · 2014年01月22日 · 最后由 zw963 回复于 2014年01月28日 · 3086 次阅读

大家如何实现 String#reverse ?

我想到了三个方法,虽然第一个其实用到了迭代器中的 reverse_each ....

str = "hello"
p str.chars.reverse_each.to_a.join
str = "hello"
y = []
str.each_char.with_index(1) {|e, i| y << x[-i] }
p y.join
str = "hello"
i = 0; j = str.length - 1
while i < j
  str[i], str[j] = str[j], str[i]
  i += 1
  j -= 1
end

p str
1 楼 已删除

#1 楼 @zgm

何以见得没有意义?

只要这两个实现,没有用到 String#reverse, 就有意义?

#2 楼 @zw963 我删了评论了。我只是觉得你用更高级的方式实现一个低级算法,不太厚道。哈哈。

#3 楼 @zgm

我也是想到后瞎写的。还真没有考虑高级低级的问题呢。

#5 楼 @luikore

师傅总是这么有深度!!

#5 楼 @luikore

我怎么觉得圈圈位置还是不对... Ruby 2.1

#7 楼 @zw963 linux 的图形界面不能要求太高...

字符串翻转,编程珠玑第一篇,

def reverse(string, from, to)
  while from < to
    temp = string[from]
    string[from] = string[to]
    string[to] = temp
    from += 1
    to -= 1
  end
end

testString = "feng qijun's macbook pro"
reverse(testString, 0, 4)
puts testString
reverse(testString, 5, testString.length-1)
puts testString
reverse(testString, 0, testString.length-1)

puts testString

我这里 linux 对的:

#10 楼 @jun1st

谢谢提供。不过,这和我那个实现是一样的。只不过比较现代的语言,支持并行赋值,省略了一个 temp 临时变量而已。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号