Java教程

Java 程序来检查一个字符串是否是两个不同字符串的有效混洗

Java 程序来检查一个字符串是否是两个不同字符串的有效混洗

在这个例子中,我们将检查一个字符串是否是 Java 中其他两个字符串的有效 shuffle。
要理解此示例,您应该了解以下Java 编程主题:
Java 字符串 Java while 和 do...while 循环

示例: 检查一个字符串是否是其他两个字符串的有效混洗

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);
      }
    }
  }
}
输出
1XY2 is a valid shuffle of XY and 12
Y1X2 is a valid shuffle of XY and 12     
Y21XX is not a valid shuffle of XY and 12
在上面的例子中,我们有一个名为 results 的字符串数组。它包含三个字符串: 1XY2Y1X2Y21XX。我们正在检查这三个字符串是否是字符串 first(XY)second(12) 的有效混洗。
这里,我们使用了 3 种方法:
1. checkLength()-混洗后的字符串中的字符数应等于两个字符串中字符的总和。
因此,此方法检查混洗后的字符串的长度是否与 firstsecond 字符串的长度之和相同。
如果长度不相等,则无需调用 shuffleCheck()方法。因此,我们使用 if 语句作为
// inside main method
if (checkLength(first, second, result) == true && shuffleCheck(first, second, result) == true)
2. sortString()-此方法将字符串转换为 char 数组,然后使用 Arrays.sort() 方法对数组进行排序。最后,返回排序后的字符串。
由于我们将混洗后的字符串与其他两个字符串进行比较,因此对所有三个字符串进行排序将使比较更有效率。
3. shuffleCheck()-此方法将混洗后的字符串的单个字符与 firstsecond 字符串的字符进行比较
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4