Optimized the code

This commit is contained in:
Omkarnath Parida
2020-10-04 01:06:25 +05:30
parent b8a519399a
commit a56758580d

View File

@ -4,28 +4,33 @@
* For example, “abc”, “abg”, “bdf”, “aeg”, ”acefg”, .. etc are subsequences of “abcdefg” * For example, “abc”, “abg”, “bdf”, “aeg”, ”acefg”, .. etc are subsequences of “abcdefg”
*/ */
function longestCommonSubsequence(x, y, str1, str2, dp) { function longestCommonSubsequence (x, y, str1, str2, dp) {
if (x == -1 || y == -1) return 0; if (x === -1 || y === -1) {
else { return 0
if (dp[x][y] != 0) return dp[x][y];
else {
if (str1[x] == str2[y]) {
return dp[x][y] = 1 + longestCommonSubsequence(x - 1, y - 1, str1, str2, dp);
} }
else { else {
return dp[x][y] = Math.max(longestCommonSubsequence(x - 1, y, str1, str2, dp), longestCommonSubsequence(x, y - 1, str1, str2, dp)) if (dp[x][y] !== 0){
return dp[x][y]
}
else {
if (str1[x] === str2[y]) {
dp[x][y] = 1 + longestCommonSubsequence(x - 1, y - 1, str1, str2, dp);
return dp[x][y]
}
else {
dp[x][y] = Math.max(longestCommonSubsequence(x - 1, y, str1, str2, dp), longestCommonSubsequence(x, y - 1, str1, str2, dp))
return dp[x][y]
} }
} }
} }
} }
function main() { function main () {
const str1 = "ABCDGH" const str1 = 'ABCDGH'
const str2 = "AEDFHR" const str2 = 'AEDFHR'
const dp = new Array(str1.length + 1).fill(0).map(x => new Array(str2.length + 1).fill(0)) const dp = new Array(str1.length + 1).fill(0).map(x => new Array(str2.length + 1).fill(0))
const res = longestCommonSubsequence(str1.length - 1, str2.length - 1, str1, str2, dp) const res = longestCommonSubsequence(str1.length - 1, str2.length - 1, str1, str2, dp)
console.log(res); console.log(res)
} }
main() main()