Write a Java Program to Check if a string is a valid shuffle of two distinct strings

Java Program to Check if a string is a valid shuffle of two distinct strings

Welcome to the World of Online Learning:

Hello Friends “This blog helps you to learn Java programming concepts. You can learn Java  language at your own speed and time. One can learn concepts of Java language by practicing various programs given on various pages of this blog. Enjoy the power of Self-learning using the Internet.”

Java Program to Check if a string is a valid shuffle of two distinct strings
Java Program to Check if a string is a valid shuffle of two distinct strings

Write a Java Program to Check if a string is a valid shuffle of two distinct strings

PROGRAM: Java Program to Check if a string is a valid shuffle of two distinct strings

/*Java Program to Check if a string is a valid shuffle of two distinct strings*/

import java.util.Arrays;

class Test {

// length of result string should be equal to sum of two strings
static boolean checkLength(String first, String second, String result) {
if (first.length() + second.length() != result.length()) {
return false;
}
else {
return true;
}
}

// this method converts the string to char array
// sorts the char array
// convert the char array to string and return it
static String sortString(String str) {

char[] charArray = str.toCharArray();
Arrays.sort(charArray);

// convert char array back to string
str = String.valueOf(charArray);

return str;
}

// this method compares each character of the result with
// individual characters of the first and second string
static boolean shuffleCheck(String first, String second, String result) {

// sort each string to make comparison easier
first = sortString(first);
second = sortString(second);
result = sortString(result);

// variables to track each character of 3 strings
int i = 0, j = 0, k = 0;

// iterate through all characters of result
while (k != result.length()) {

// check if first character of result matches
// with first character of first string
if (i < first.length() && first.charAt(i) == result.charAt(k))
i++;

// check if first character of result matches
// with the first character of second string
else if (j < second.length() && second.charAt(j) == result.charAt(k))
j++;

// if the character doesn’t match
else {
return false;
}

// access next character of result
k++;
}

// after accessing all characters of result
// if either first or second has some characters left
if(i < first.length() || j < second.length()) {
return false;
}

return true;
}

public static void main(String[] args) {

String first = “XY”;
String second = “12”;
String[] results = {“1XY2”, “Y1X2”, “Y21XX”};

// call the method to check if result string is
// shuffle of the string first and second
for (String result : results) {
if (checkLength(first, second, result) == true && shuffleCheck(first, second, result) == true) {
System.out.println(result + ” is a valid shuffle of ” + first + ” and ” + second);
}
else {
System.out.println(result + ” is not a valid shuffle of ” + first + ” and ” + second);
}
}
}
}

Leave a Reply

Your email address will not be published. Required fields are marked *