Need help with SwiftLCS?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

Frugghi
207 Stars 16 Forks MIT License 82 Commits 0 Opened issues

Description

Swift implementation of the longest common subsequence (LCS) algorithm.

Services available

!
?

Need anything else?

Contributors list

No Data

SwiftLCS

Build Status Carthage compatible Pods Pod platforms

SwitLCS provides an extension of

Collection
that finds the indexes of the longest common subsequence with another collection.

The longest common subsequence (LCS) problem is the problem of finding the longest subsequence common to all sequences in a set of sequences (often just two sequences). It differs from problems of finding common substrings: unlike substrings, subsequences are not required to occupy consecutive positions within the original sequences.

The project is based on the Objective-C implementation of NSArray+LongestCommonSubsequence.

:package: Installation

CocoaPods

CocoaPods is the dependency manager for Swift and Objective-C Cocoa projects. It has over ten thousand libraries and can help you scale your projects elegantly.

Add this to your Podfile: ```Ruby use_frameworks!

pod 'SwiftLCS' ```

Carthage

Carthage builds your dependencies and provides you with binary frameworks, but you retain full control over your project structure and setup.

Add this to your Cartfile:

Ruby
github "Frugghi/SwiftLCS"

Swift Package Manager

The Swift Package Manager is a tool for managing the distribution of Swift code. It’s integrated with the Swift build system to automate the process of downloading, compiling, and linking dependencies.

Add

SwiftLCS
to your Package.swift dependencies: ```Swift import PackageDescription

let package = Package( dependencies: [ .Package(url: "https://github.com/Frugghi/SwiftLCS.git", majorVersion: 1, minor: 3) ] ) ```

Manual

Include

SwiftLCS.swift
into your project.

:book: Documentation

The API documentation is available here.

:computer: Usage

Import the framework:

Swift
import SwiftLCS

String

let x = "abracadabra"
let y = "yabbadabbadoo"

let z = x.longestCommonSubsequence(y) // abadaba

Array

let x = [1, 2, 3, 4, 5, 6, 7]
let y = [8, 9, 2, 10, 4, 11, 6, 12]

let z = x.longestCommonSubsequence(y) // [2, 4, 6]

Indexes

let x = [1, 2, 3, 4, 5, 6, 7]
let y = [8, 9, 2, 10, 4, 11, 6, 12]

let diff = x.diff(y) // diff.commonIndexes: [1, 3, 5] // diff.addedIndexes: [0, 1, 3, 5, 7] // diff.removedIndexes: [0, 2, 4, 6]

:warning: Objective-C

Object comparison of Objective-C objects is done through the

isEquals:
method, so be sure that the implementations is correct otherwise
SwiftLCS
will not return the correct indexes.

:pagefacingup: License LICENSE

SwiftLCS is released under the MIT license. See LICENSE for details.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.