Build Lowest Number by Removing n digits from a given number - GeeksforGeeks



Build Lowest Number by Removing n digits from a given number - GeeksforGeeks

Build Lowest Number by Removing n digits from a given number

Given a string 'str' of digits and an integer 'n', build the lowest possible number by removing 'n' digits from the string and not changing the order of input digits.

Examples:

Input: str = "4325043", n = 3  Output: "2043"    Input: str = "765028321", n = 5  Output: "0221"    Input: str = "121198", n = 2  Output: "1118" 

We strongly recommend to minimize your browser and try this yourself first.
The idea is based on the fact that a character among first (n+1) characters must be there in resultant number. So we pick the smallest of first (n+1) digits and put it in result, and recur for remaining characters. Below is complete algorithm.

Initialize result as empty string       res = ""  buildLowestNumber(str, n, res)  1) If n == 0, then there is nothing to remove.     Append the whole 'str' to 'res' and return    2) Let 'len' be length of 'str'. If 'len' is smaller or equal      to n, then everything can be removed     Append nothing to 'res' and return    3) Find the smallest character among first (n+1) characters     of 'str'.  Let the index of smallest character be minIndex.     Append 'str[minIndex]' to 'res' and recur for substring after     minIndex and for n = n-minIndex         buildLowestNumber(str[minIndex+1..len-1], n-minIndex).

Read full article from Build Lowest Number by Removing n digits from a given number - GeeksforGeeks


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts