当前位置: 首页 > 面试题库 >

如何在Swift中不使用“ .reverse()”来反转数组?

白通
2023-03-14
问题内容

我有数组,需要不使用Array.reverse方法而仅通过for循环将其反转。

var names:[String] = ["Apple", "Microsoft", "Sony", "Lenovo", "Asus"]

问题答案:

这是@Abhinav的答案翻译为 Swift 2.2

var names: [String] = ["Apple", "Microsoft", "Sony", "Lenovo", "Asus"]

var reversedNames = [String]()

for arrayIndex in (names.count - 1).stride(through: 0, by: -1) {
    reversedNames.append(names[arrayIndex])
}

使用此代码不会给您有关不赞成使用C样式for循环或使用的任何错误或警告--

Swift 3-当前:

let names: [String] = ["Apple", "Microsoft", "Sony", "Lenovo", "Asus"]

var reversedNames = [String]()

for arrayIndex in stride(from: names.count - 1, through: 0, by: -1) {
    reversedNames.append(names[arrayIndex])
}

另外,您可以正常循环并每次减去:

let names = ["Apple", "Microsoft", "Sony", "Lenovo", "Asus"]

let totalIndices = names.count - 1 // We get this value one time instead of once per iteration.

var reversedNames = [String]()

for arrayIndex in 0...totalIndices {
    reversedNames.append(names[totalIndices - arrayIndex])
}


 类似资料:
  • 问题内容: 我有两个视图控制器,一个和两个。我从VC一到VC二。在VC 2上,我选择一些存储在数组中的数据。当我按下导航栏上的“返回”按钮时,我想将该阵列发送回VC One。 使用Swift和Storyboards做到这一点的最佳方法是什么? 谢谢! 问题答案: 如果要使用“完成”和“取消”按钮(有点像选择器)来显示模式视图,则在展开segue方法期间获取值可能是最简单的。 假定您要使用导航控制器

  • 问题内容: 我试图在Java中反转一个int数组。 此方法不会反转数组。 怎么办 问题答案: 要反转一个int数组,可以交换项直到达到中点为止,如下所示: 这样,你将每个元素交换两次,因此结果与初始列表相同。

  • 我使用了下面的逻辑,但是得到一个异常“Java . lang . stringindexoutofboundsexception”。感谢帮助。谢谢大家!!

  • 问题描述 (Problem Description) 如何使用堆栈反转字符串? 解决方案 (Solution) 下面的示例演示了如何在用户定义的方法StringReverserThroughStack()的帮助下使用堆栈来反转字符串。 import java.io.IOException; public class StringReverserThroughStack { private S

  • 问题内容: 我已经尝试了一段时间,但无法正常工作。我正在尝试一种无需使用字符串或数组即可反转整数的方法。例如,123应该以整数形式反转为321。 我的第一次尝试: 我也尝试使用它,但是似乎弄乱了中间数字: 我尝试查看网站上的一些示例,但是无法使其正常工作。为了进一步说明,我不能为此项目使用String或数组,而必须使用递归。有人可以帮我解决问题。谢谢。 问题答案: 关于什么: 当然,这是假定的。

  • 我刚刚开始学习递归,并能够使用它编写一个简单的阶乘程序,没有太多问题。现在我正在尝试编写一个递归方法,该方法以相反的顺序写入数组,但我不知道我做错了什么。我错过了什么?非常感谢。