Add tasks for all the new languages
This commit is contained in:
parent
9dc3c2bb62
commit
bba7bfd280
13208 changed files with 134745 additions and 0 deletions
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
@ -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())
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue