在这个实例中,我们将检查一个字符串是否是 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。因此,作为有效的重组,应保持字符串的顺序。