Next lexicographical string - PrismoSkills



Next lexicographical string - PrismoSkills

Problem: Write code to print the lexicographical next string for a given string.

(As in dictionary, next word after this word but having similar letters) For ex:

i/p abcd

o/p abdc


i/p abcged

o/p abdceg


Solution:

Find the number of characters at the end of string that are sorted

decreasingly e.g. in "abcgda" the length of such sub-string is 3 ( "gda" ).

Then look at the char before this sub-string (here it is 'c' ).

This character must be replaced with the smallest character in

the decreasing sub-sequence which is bigger than this char (here it's 'd').

Then sort the decreasing sub-string to be increasing


So the next lexicographical string of "abcgda" is "abdacg" ('d' is replaced

with 'c' and then "gca" is sorted to be "acg")

Note If a string is sorted decreasingly like "dcba" it's next char does

not exist so it's next string doesn't exist


Read full article from Next lexicographical string - PrismoSkills


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