From 69f009e0a58945e74a7e051a34052c84ecbb96c9 Mon Sep 17 00:00:00 2001 From: Erdenezul Date: Tue, 21 Nov 2017 15:28:55 +0800 Subject: [PATCH] add abbrevation solution to dp --- dynamic_programming/abbreviation.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 dynamic_programming/abbreviation.py diff --git a/dynamic_programming/abbreviation.py b/dynamic_programming/abbreviation.py new file mode 100644 index 000000000..44a168980 --- /dev/null +++ b/dynamic_programming/abbreviation.py @@ -0,0 +1,29 @@ +""" +https://www.hackerrank.com/challenges/abbr/problem +You can perform the following operation on some string, : + +1. Capitalize zero or more of 's lowercase letters at some index i + (i.e., make them uppercase). +2. Delete all of the remaining lowercase letters in . + +Example: +a=daBcd and b="ABC" +daBcd -> capitalize a and c(dABCd) -> remove d (ABC) +""" +def abbr(a, b): + n = len(a) + m = len(b) + dp = [[False for _ in range(m + 1)] for _ in range(n + 1)] + dp[0][0] = True + for i in range(n): + for j in range(m + 1): + if dp[i][j]: + if j < m and a[i].upper() == b[j]: + dp[i + 1][j + 1] = True + if a[i].islower(): + dp[i + 1][j] = True + return dp[n][m] + + +if __name__ == "__main__": + print abbr("daBcd", "ABC") # expect True