For a given
string, remove adjacent characters, if those are same.
For example,
AAABBCDD is
converted to ABCD
AAABBC is
converted to ABC
ABCDDEFFGA is converted to ABCDEFGA
ABCDDEFFGA is converted to ABCDEFGA
import java.util.Objects; public class AdjacentCharcaters { public static String getTransformedString(String str){ Objects.nonNull(str); if(str.length() == 1) return str; StringBuilder builder = new StringBuilder(); char prevChar = str.charAt(0); builder = builder.append(prevChar); for(int i=1; i<str.length(); i++){ if(prevChar == str.charAt(i)) continue; prevChar = str.charAt(i); builder = builder.append(prevChar); } return builder.toString(); } }
Following is
the junit test case for above application.
import static org.junit.Assert.assertEquals; import org.junit.Test; public class AdjacentCharcatersTest { @Test public void test1() { String str1 = "A"; String str2 = "AA"; String str3 = "AAA"; String str4 = "AAAA"; String str5 = "AAABBCDD"; String str6 = "AAABBC"; String str7 = "ABCDDEFFGA"; String expected1 = "A"; String expected5 = "ABCD"; String expected6 = "ABC"; String expected7 = "ABCDEFGA"; assertEquals(expected1, AdjacentCharcaters.getTransformedString(str1)); assertEquals(expected1, AdjacentCharcaters.getTransformedString(str2)); assertEquals(expected1, AdjacentCharcaters.getTransformedString(str3)); assertEquals(expected1, AdjacentCharcaters.getTransformedString(str4)); assertEquals(expected5, AdjacentCharcaters.getTransformedString(str5)); assertEquals(expected6, AdjacentCharcaters.getTransformedString(str6)); assertEquals(expected7, AdjacentCharcaters.getTransformedString(str7)); } }
No comments:
Post a Comment