0% found this document useful (0 votes)
7 views16 pages

Swift Code Examples for Common Problems

Its easy to understand ios codes

Uploaded by

mmind6167
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views16 pages

Swift Code Examples for Common Problems

Its easy to understand ios codes

Uploaded by

mmind6167
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Mohammed Nazim

Set – 1 Mathematical Problem

1. Armstrong number

import Foundation

func isArmstrongNumber(_ number: Int) -> Bool {


let digits = String(number).compactMap { Int(String($0)) }
let power = [Link]
let sum = [Link](0) { $0 + Int(pow(Double($1), Double(power))) }
return sum == number
}

let number = 1634


if isArmstrongNumber(number) {
print("\(number) is an Armstrong number.")
} else {
print("\(number) is not an Armstrong number.")
}

2. GCD of two numbers

func gcd(_ a: Int, _ b: Int) -> Int {


var x = a
var y = b
while y != 0 {
let remainder = x % y
x=y
y = remainder
}
return x
}

let num1 = 10
let num2 = 15
let result = gcd(num1, num2)
print("The GCD of \(num1) and \(num2) is \(result).")
Mohammed Nazim

Set – 2 Puzzles Problems

1. Trailing zeroes in factorial

func trailingZeroesInFactorial(_ n: Int) -> Int {


var count = 0
var divisor = 5
var num = n
while num / divisor > 0 {
count += num / divisor
divisor *= 5
}
return count
}

let number = 25
let trailingZeroes = trailingZeroesInFactorial(number)
print("The number of trailing zeroes in \(number)! is \(trailingZeroes).")

2. Number of open doors

func numberOfOpenDoors(_ n: Int) -> Int {


return Int(Double(n).squareRoot())
}

let doors = 10
let openDoors = numberOfOpenDoors(doors)
Mohammed Nazim

print("The number of open doors out of \(doors) doors is \(openDoors).")


Mohammed Nazim

Set – 3 Array Problems

1. Remove duplicate elements from sorted Array

func removeDuplicates(from sortedArray: [Int]) -> [Int] {


guard ![Link] else { return [] } var
uniqueArray = [sortedArray[0]] for i in
1..<[Link] { if sortedArray[i] != sortedArray[i
- 1] { [Link](sortedArray[i])
} } return
uniqueArray
}
let sortedArray = [1, 1, 2, 3, 3, 4, 5, 5] let uniqueArray =
removeDuplicates(from: sortedArray) print("Array after
removing duplicates: \(uniqueArray)")

2. Maximum Sub Array

func maxSubArray(_ nums: [Int]) -> Int {


guard ![Link] else { return 0 }

var currentMax = nums[0]


var globalMax = nums[0] for
i in 1..<[Link] {
currentMax = max(nums[i], currentMax + nums[i])
globalMax = max(globalMax, currentMax)
}

return globalMax
}
Mohammed Nazim

let array = [ 1, -3, 4, -1, 2, 1, -5, 4]


let maxSum = maxSubArray(array) print("Maximum
subarray sum is \(maxSum)")

Set – 4 String Problems

1. Extract Maximum

func extractMaximum(from array: [Int]) -> Int? {


return [Link]()
}
let numbers = [3, 5, 1, 9, 2]
if let maxValue = extractMaximum(from: numbers) {
print("The maximum value is \(maxValue)")
} else {
print("The array is empty.")
}

2. URLify a Given String

func urlify(_ text: String) -> String {


return [Link](of: " ", with: "%20")

let originalString = "Hello World This Is Swift" let


urlifiedString = urlify(originalString)
print("URLified string: \(urlifiedString)")
Mohammed Nazim

Set- 5 Search problems

1. Floor in a sorted array

func floor(of target: Int, in array: [Int]) -> Int? {


var low = 0 var high = [Link] - 1 var
result: Int? = nil while low <= high { let
mid = (low + high) / 2 if array[mid] ==
target { return array[mid] // Exact match
} else if array[mid] < target { result =
array[mid] low = mid + 1 } else {
high = mid - 1
} }
return result
}
let sortedArray = [1, 2, 8, 10, 10, 12, 19] let
target = 5
if let floorValue = floor(of: target, in: sortedArray) {
print("Floor value is: \(floorValue)")
} else { print("No floor
found")
}

2. Last index of One

let array = [1, 2, 3, 4, 1] if let lastIndex =


[Link](of: 2) { print("The last
index of 2 is \(lastIndex)")
Mohammed Nazim

} else {
print("2 is not in the array")
}

Set – 6 Sorting Problems

1. Reversing a String

func bubbleSort(_ array: inout [Int]) {


let n = [Link] for i in 0..<n {
var swapped = false for j in
1..<(n - i) { if array[j - 1] >
array[j] { [Link](j -
1, j) swapped = true
}
}
if !swapped {
break
}
}
}
var numbers = [64, 34, 25, 12, 22, 11, 90]
bubbleSort(&numbers) print("Sorted
array: \(numbers)")

2. Quick Sort

func quickSort(_ array: inout [Int]) {


quickSortHelper(&array, low: 0, high: [Link] - 1)
}
Mohammed Nazim

private func quickSortHelper(_ array: inout [Int], low: Int, high: Int) {
if low < high {
let pivotIndex = partition(&array, low: low, high: high)
quickSortHelper(&array, low: low, high: pivotIndex - 1)
quickSortHelper(&array, low: pivotIndex + 1, high: high)
}
}
private func partition(_ array: inout [Int], low: Int, high: Int) -> Int {
let pivot = array[high] var i = low - 1 for j in low..<high {
if array[j] <= pivot { i += 1 [Link](i, j)
}
}
[Link](i + 1, high)
return i + 1
}

var numbers = [10, 7, 8, 9, 1, 5]


quickSort(&numbers) print("Sorted
array: \(numbers)")

Set – 7 Hashing Problems

1. check if two arrays are equal or not

func areArraysEqual<T: Equatable>(_ array1: [T], _ array2: [T]) -> Bool {


return array1 == array2
}

let array1 = ["apple", "banana", "cherry"]


let array2 = ["apple", "banana", "cherry"]
let array3 = ["apple", "banana", "kiwi"]
Mohammed Nazim

let array4 = [true, false, true] let array5 =


[true, true, false]

let result1 = areArraysEqual(array1, array2) // true


let result2 = areArraysEqual(array1, array3) // false
let result3 = areArraysEqual(array4, array5) // false
print(result1) // Output: true print(result2) //
Output: false print(result3) // Output: false

2. count pairs with given sum

func countPairsWithSum(_ array: [Int], targetSum: Int) -> Int {


var count = 0 var frequency: [Int: Int] = [:] for number in
array {
let complement = targetSum - number if let
complementCount = frequency[complement] {
count += complementCount
}
frequency[number, default: 0] += 1
} return
count
}

let numbers = [1, 5, 7, -1, 5]


let targetSum = 6
let pairCount = countPairsWithSum(numbers, targetSum: targetSum)
print(pairCount) // Output: 3
Mohammed Nazim

Set – 9 Recursion

1. Print Pattern

func printPattern(_ n: Int, currentRow: Int = 1) {


if currentRow > n { return
}
for _ in 1...currentRow {
print("*", terminator: "")
}
print()
printPattern(n, currentRow: currentRow + 1)
} let n = 5
printPattern(n)

2. Tower of Hanoi

func towerOfHanoi(n: Int, from source: String, to destination: String, using auxiliary: String) {
if n == 1 {
print("Move disk 1 from \(source) to \(destination)")
return
}
towerOfHanoi(n: n - 1, from: source, to: auxiliary, using: destination)

print("Move disk \(n) from \(source) to \(destination)")


towerOfHanoi(n: n - 1, from: auxiliary, to: destination, using: source)
}

let n = 3
towerOfHanoi(n: n, from: "A", to: "C", using: "B")
Mohammed Nazim

Set – 11 Linked List Problems

1. Reorder List

class ListNode {
var val: Int var
next: ListNode?
init(_ val: Int) {
[Link] = val
[Link] = nil
}
}
func reorderList(_ head: ListNode?) {

guard var head = head else { return }


var slow = head var fast = head

while [Link] != nil && [Link]!.next != nil {


slow = [Link]! fast = [Link]!.next!
}

var secondHalf = [Link]


[Link] = nil secondHalf =
reverseList(secondHalf)

var firstHalf = head while let


secondNode = secondHalf { let
temp1 = [Link] let temp2 =
[Link]
Mohammed Nazim

[Link] = secondNode
secondHalf = temp2

if temp1 == nil { break }

[Link] = temp1
firstHalf = temp1!
}
}

func reverseList(_ head: ListNode?) -> ListNode? {


var prev: ListNode? = nil var current = head
while current != nil { let nextNode =
current!.next current!.next = prev prev =
current current = nextNode
}
return prev
}

func printList(_ head: ListNode?) {


var current = head while current !=
nil { print(current!.val,
terminator: " ") current =
current!.next
}
print() }

let head = ListNode(1) [Link] =


ListNode(2) [Link]?.next =
ListNode(3) [Link]?.next?.next =
ListNode(4) [Link]?.next?.next?.next =
ListNode(5)
Mohammed Nazim

print("Original List:")
printList(head) reorderList(head)
print("Reordered List:")
printList(head)

2. reverse a linked list

class ListNode {
var value: Int var
next: ListNode?
init(_ value: Int) {
[Link] = value
[Link] = nil
}
}

func reverseLinkedList(_ head: ListNode?) -> ListNode? {


var prev: ListNode? = nil var current = head while
current != nil { let next = current?.next
current?.next = prev prev = current
current = next
} return
prev
}

func printList(_ head: ListNode?) { var


current = head while current != nil {
print(current!.value, terminator: " -> ")
current = current?.next
}
print("nil") // End of the list
}
Mohammed Nazim

let node1 = ListNode(1) let


node2 = ListNode(2) let
node3 = ListNode(3) let
node4 = ListNode(4) let
node5 = ListNode(5)

[Link] = node2 [Link]


= node3 [Link] = node4
[Link] = node5
print("Original List:")

printList(node1)
let reversedHead = reverseLinkedList(node1)
print("Reversed List:") printList(reversedHead)
Mohammed Nazim

Set – 14 queue and deque


1. Implement queue using array

struct Queue<T> { private var


elements: [T] = [] mutating func
enqueue(_ element: T) {
[Link](element)
}
mutating func dequeue() -> T? {
guard !isEmpty() else { return nil }
return [Link]()
}
func isEmpty() -> Bool {
return [Link]
}
func front() -> T? {
return [Link]
}
}
var queue = Queue<String>()
[Link]("First") [Link]("Second")

print([Link]() ?? "Queue is empty") // Output: First print([Link]() ??


"Queue is empty") // Output: First print([Link]() ?? "Queue is empty") //
Output: Second

2. circular tour

func circularTour(petrol: [Int], distance: [Int]) -> Int {


let n = [Link] var totalPetrol = 0 var
Mohammed Nazim

totalDistance = 0 var currentPetrol = 0 var


startIndex = 0 for i in 0..<n { totalPetrol +=
petrol[i] totalDistance += distance[i]
currentPetrol += petrol[i] - distance[i] if
currentPetrol < 0 { startIndex = i + 1
currentPetrol = 0
}
}
return (totalPetrol >= totalDistance) ? startIndex : -1
}
let petrol = [4, 6, 7, 4]
let distance = [6, 5, 3, 5]
let startingPump = circularTour(petrol: petrol, distance: distance)
if startingPump != -1 {
print("The circular tour can be started at petrol pump index: \(startingPump)")
} else {
print("The circular tour cannot be completed.")
}

You might also like