- 输入一个Int 值(1234567),在不转化为String类型时, 输出翻转后的数值(7654321),swift 语言实现如下。
// 第一种实现方法,使用递归思想。
var result = 0
@discardableResult
func reverseNumbers(a: Int) -> Int {
let x: Int = a % 10; // 取余数
let y: Int = a / 10; // 取整数
result = result * 10 + x;
if y > 0 {
reverseNumbers(a: y) // 递归调用
}
return result
}
// 第二种实现方法, 使用while循环实现。
func reverseNumbers1(a: Int) -> Int {
var x: Int = a % 10 // 6
var y: Int = a / 10 // 12345
var result: Int = x
while (y != 0){
x = y % 10; // 5
y = y / 10; // 1234
result = result * 10 + x;
}
return result
}
运行结果:
- 给出一个数组Datas 定义一个函数, 在数组中查找元素m, 返回其下标,找不到返回-1(二分法实现)。
// 二分法查找元素底标
func findNumber(arr: inout[Int], tagger: Int) -> Int {
guard arr.count != 0 else {return -1}
var left = 0;
var right = arr.count - 1
while left <= right {
let mid = (left + right) / 2
if arr[mid] == tagger {
return mid
}else if arr[mid] > tagger {
right = mid - 1
}else{
left = mid + 1
}
}
return -1
}
运行截图:
- 封装一个函数,传递两个数组array1, array2,求array1数组中是否包含array2相同顺序的全部元素,如果包含, 返回array1中相应的全部下标。
// 判断数组中是否包含另外一个数组 顺序也要对应上
func orderContain(array1: inout[Int], array2:inout[Int]) -> [Int] {
guard array1.count > array2.count,
array2.count != 0 else {return [-1]}
var array: [Int] = []
for i in 0..<array1.count{
if array1[i] == array2[0]{
for j in 1..<array2.count{
if array1[i + j] != array2[j] {
break
}
if j == array2.count - 1{
array.append(i)
}
}
}
}
return (array.count == 0) ? [-1] : array
}
运行结果如下截图: