编写一个算法来反转带循环的字符串?

时间:2017-03-09 00:01:19

标签: swift algorithm

我需要创建一个将字符串转换为类型的函数。我根本不能使用.reverse()函数。这必须是使用循环的算法

这是我到目前为止,但循环没有执行...我正在快速的操场上工作。提前致谢

   func reverse(_ phrase: String) -> String
{
    var phraseArray = [phrase.characters]
    var reverseString = ""
    for i in phrase.characters{
        var character = phrase.characters.last 
        reverseString += String(describing: character)
        phraseArray.removeLast()

    }
    return reverseString
}

3 个答案:

答案 0 :(得分:2)

这里有一些问题:

  1. phraseArray是一个包含单个元素的数组,String.CharacterView返回的phrase.characters实例。如果要创建包含字符视图字符的新数组,请将字符视图传递给数组初始值设定项。此外,更适合称之为characters

    var characters = Array(phrase.characters)
    
  2. phrase.characters.last将始终返回相同的字符,因为迭代之间不会更改phrase或其characters

  3. 作为第1点的结果,phraseArray.removeLast()将删除填充的单个字符视图,字符视图字符中的字符。在第1点进行更改后,您可以使用characters.removeLast()删除最后一个字符,removeLast()函数返回该字符。您可以使用此返回值替换phrase.characters.last

  4. 实施这些更改,看看它是如何发生的。如果您遇到进一步的问题,请告诉我。

答案 1 :(得分:0)

我不会为你写答案。但我可以描述一下算法: 你需要:

  1. 获取字符串成为字符数组
  2. 迭代 half 数组,如果你从数组开始并不重要 开始或结束
  3. 在每次迭代时切换循环索引指向的字符 使用来自另一端的索引值的字符 字符串。因此,如果你从头开始它将是0和最后一个, 然后是1和最后 - 1等等。

答案 2 :(得分:0)

   func reverse(_ phrase: String) -> String
{
    var phraseArray = Array(phrase.characters)

    var rev = [Character]()
    var len = phraseArray.count
    for i in 0..<len {
        rev.append(phraseArray.removeLast())
    }

    return String(rev)
}

print(reverse("AB"))