Add tasks for all the new languages

This commit is contained in:
Tina Müller 2016-12-05 23:44:36 +01:00
parent 9dc3c2bb62
commit bba7bfd280
13208 changed files with 134745 additions and 0 deletions

View file

@ -0,0 +1,16 @@
func rlcs(s1:String, _ s2:String) -> String {
let x = s1.characters.count
let y = s2.characters.count
if x == 0 || y == 0 {
return ""
} else if s1[s1.startIndex.advancedBy(x - 1)] == s2[s2.startIndex.advancedBy(y - 1)] {
return rlcs(s1[s1.startIndex..<s1.startIndex.advancedBy(x - 1)],
s2[s2.startIndex..<s2.startIndex.advancedBy(y - 1)]) + String(s1[s1.startIndex.advancedBy(x - 1)])
} else {
let xstr = rlcs(s1, s2[s2.startIndex..<s2.startIndex.advancedBy(y - 1)])
let ystr = rlcs(s1[s1.startIndex..<s1.startIndex.advancedBy(x - 1)], s2)
return xstr.characters.count > ystr.characters.count ? xstr : ystr
}
}

View file

@ -0,0 +1,31 @@
func lcs(s1:String, _ s2:String) -> String {
var x = s1.characters.count
var y = s2.characters.count
var lens = Array(count: x + 1, repeatedValue:
Array(count: y + 1, repeatedValue: 0))
var returnStr = ""
for i in 0..<x {
for j in 0..<y {
if s1[s1.startIndex.advancedBy(i)] == s2[s2.startIndex.advancedBy(j)] {
lens[i + 1][j + 1] = lens[i][j] + 1
} else {
lens[i + 1][j + 1] = max(lens[i + 1][j], lens[i][j + 1])
}
}
}
while x != 0 && y != 0 {
if lens[x][y] == lens[x - 1][y] {
--x
} else if lens[x][y] == lens[x][y - 1] {
--y
} else {
returnStr += String(s1[s1.startIndex.advancedBy(x - 1)])
--x
--y
}
}
return String(returnStr.characters.reverse())
}