Recursively remove all adjacent duplicates Java
- Get link
- X
- Other Apps
PROGRAM TO RECURSIVELY REMOVE ALL ADJACENT DUPLICATES
import java.io.*;import java.util.*;class MAIN { // Recursively removes adjacent // duplicates from str and returns // new string. las_removed is a // pointer to last_removed character static String removeUtil(String str, char last_removed) { // If length of string is 1 or 0 if (str.length() == 0 || str.length() == 1) return str; // Remove leftmost same characters // and recur for remaining // string if (str.charAt(0) == str.charAt(1)) { last_removed = str.charAt(0); while (str.length() > 1 && str.charAt(0) == str.charAt(1)) str = str.substring(1, str.length()); str = str.substring(1, str.length()); return removeUtil(str, last_removed); } // At this point, the first // character is definiotely different // from its adjacent. Ignore first // character and recursively // remove characters from remaining string String rem_str = removeUtil(str.substring( 1,str.length()), last_removed); // Check if the first character of // the rem_string matches with // the first character of the original string if (rem_str.length() != 0 && rem_str.charAt(0) == str.charAt(0)) { last_removed = str.charAt(0); // Remove first character return rem_str.substring(1,rem_str.length()); } // If remaining string becomes // empty and last removed character // is same as first character of // original string. This is needed // for a string like "acbbcddc" if (rem_str.length() == 0 && last_removed == str.charAt(0)) return rem_str; // If the two first characters // of str and rem_str don't match, // append first character of str // before the first character of // rem_str return (str.charAt(0) + rem_str); } static String remove(String str) { char last_removed = '\0'; return removeUtil(str, last_removed); } // Driver code public static void main(String args[]) { String str1 = "geeksforgeeg"; System.out.println(remove(str1)); String str2 = "azxxxzy"; System.out.println(remove(str2)); String str3 = "caaabbbaac"; System.out.println(remove(str3)); String str4 = "gghhg"; System.out.println(remove(str4)); String str5 = "aaaacddddcappp"; System.out.println(remove(str5)); String str6 = "aaaaaaaaaa"; System.out.println(remove(str6)); String str7 = "qpaaaaadaaaaadprq"; System.out.println(remove(str7)); String str8 = "acaaabbbacdddd"; System.out.println(remove(str8)); }}
OUTPUT
gksfor ay g a qrq acac a
- Get link
- X
- Other Apps
Comments
Post a Comment