1

我正在学习coffeescript并编写了以下函数来反转给定的单词:

reverse = (word) ->
 if word.length is 0
     return "empty string"
 if word.length is 1
     return word
 left = 0
 right = word.length-1
 while left < right
     swap(word, left, right)
     #[word[left], word[right]] = [word[right], word[left]]
     left++
     right--
 return word

swap = (word, left, right) ->
 console.log "#{word[left]} #{word[right]}"
 temp = word[left]
 word[left] = word[right]
 word[right] = temp
 console.log "#{word[left]} #{word[right]}"

console.log reverse("coffeescript")

但它不起作用。在交换函数本身中,两个索引处的字符不会交换位置。我错过了什么?

4

2 回答 2

4

问题可能在于 Javascript 中的字符串是不可变的,因此您不能更改它们。

反转字符串的另一种方法是

 "coffeescript".split("").reverse().join ""

来自rosettacode.org

于 2013-06-02T19:46:56.753 回答
1

反转字符串的另一个选项是 CoffeeScript:

(c for c in 'coffeescript' by -1).join ''

于 2013-06-02T21:34:57.763 回答