Example 1:
Input: s = ["h","e","l","l","o"]
Output: ["o","l","l","e","h"]
Example 2:
Input: s = ["H","a","n","n","a","h"]
Output: ["h","a","n","n","a","H"]
解法:
这题可以很简单的使用 reverse! 解决, 但是这边挑战不使用 reverse 该如何解
第一种方法,建立额外空间纪录
缺点是会佔用到比较多额外空间
def reverse_string(s) len = s.length arr = [] while len > 0 arr << s.pop len -= 1 end arrend
第二种方法 直接交换左右两边的值
若是阵列长度为奇数,两边阵列位置相等表示已交换完成,若阵列长度是偶数,左右数值不会相遇在同一位址,因此当左边阵列位址将大于右边阵列位址表示交换完毕。
def reverse_string(s) left = 0 right = s.length - 1 while left < right t = s[left] s[left] = s[right] s[right] = t left += 1 right -= 1 end send