2017-03-09 70 views
-3

我需要创建一个函数来反转字符串的类型。我根本不能使用.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 
} 
+5

'''代码不会工作'''不是最有用的描述。 – sascha

+3

潜在答复者的注意事项:由于这几乎肯定是一个家庭作业问题,请不要直接提供解决方案,因为根据Stackoverflow的作业问题政策 – Alexander

+0

您可能需要检查[this](https://meta.stackoverflow.com/问题/ 334822 /如何做我问 - 答案 - 家庭作业问题)之前问你的问题:) –

回答

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

执行这些更改,看看它是如何发生的。如果您遇到更多问题,请告知我。

0

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

  1. 获取字符串成为一个字符数组
  2. 叠代一半数组,如果从 开始开始或无关紧要每个迭代结束
  3. 将字符串切换为您的循环索引指向 的字符与索引值为 另一端的字符。所以如果你从头开始它将是0和最后, 然后1和最后1,依此类推。
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")) 
+3

对我来说,我不会投下你的答案,因为它没有错,我认为它确实回答了OP的问题。然而,作为一个专业的编程社区,回答这样的问题根本不是什么大问题,很显然,OP正在询问解决作业的问题,如果我回答它,我会试着让我的答案提供一些逻辑给OP做和其他答案一样的工作,给他解决问题的能力。这并不意味着我们是我们不愿意帮助的坏人,我认为当让OP考虑解决它时,情况恰恰相反,这对他来说确实是值得的。 –

相关问题