在这个实例中,我们将检查一个字符串是否是 Java 中另外两个字符串的有效重组(洗牌)。
要理解此示例,您应该了解以下Java编程主题:
class Main { //检查结果字符串是否有效打乱第一个和第二个字符串 static boolean shuffleCheck(String first, String second, String result) { //检查结果长度是否与 //第一和第二个结果的总和 if(first.length() + second.length() != result.length()) { return false; } //跟踪3个字符串的每个字符的变量 int i = 0, j = 0, k = 0; //遍历结果的所有字符 while (k != result.length()) { //检查结果的第一个字符是否与第一个字符串的第一个字符匹配 if (i < first.length() && first.charAt(i) == result.charAt(k)){ i++; //检查结果的第一个字符是否与第二个字符串的第一个字符匹配 }else if (j < second.length() && second.charAt(j) == result.charAt(k)){ j++; //如果字符不匹配 }else { return false; } //访问结果的下一个字符 k++; } //在访问结果的所有字符之后 //如果第一个或第二个有一些字符留下 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", "Y12X"}; //调用方法以检查结果字符串是否为 //first 和 second 的混合 for (String result : results) { if (shuffleCheck(first, second, result) == true) { System.out.println(result + " 是 " + first + " 和" + second + "有效的重组"); } else { System.out.println(result + " 不是 " + first + " 和" + second+ "有效的重组"); } } } }
输出结果
1XY2 是 XY 和 12 有效的重组 Y12X 不是 XY 和 12 有效的重组
在上面的示例中,我们有一个名为results的字符串数组。它包含两个字符串:1XY2和Y12X。我们正在检查这两个字符串是否是有效的字符串first(XY)和second(12)。
这里,程序说1XY2是一个有效的洗牌XY和12。但是,Y12X这不是有效的洗牌。
这是因为Y12X更改了字符串的顺序XY。在这里,Y用于之前X。因此,作为有效的重组,应保持字符串的顺序。