Java 程序:检查一个字符串是否是两个不同字符串的有效混合
要理解这个示例,你需要了解以下 Java 编程 主题:
示例:检查字符串是否是另外两个字符串的有效混排
import java.util.Arrays;
class Test {
// 结果字符串的长度应该等于两个字符串长度之和
static boolean checkLength(String first, String second, String result) {
if (first.length() + second.length() != result.length()) {
return false;
}
else {
return true;
}
}
// 这个方法将字符串转换为字符数组
// 对字符数组排序
// 将字符数组转换回字符串并返回
static String sortString(String str) {
char[] charArray = str.toCharArray();
Arrays.sort(charArray);
// 将字符数组转换回字符串
str = String.valueOf(charArray);
return str;
}
// 这个方法比较结果字符串的每个字符
// 和第一个和第二个字符串的各个字符
static boolean shuffleCheck(String first, String second, String result) {
// 对每个字符串排序以便于比较
first = sortString(first);
second = sortString(second);
result = sortString(result);
// 用于追踪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", "Y1X2", "Y21XX"};
// 调用方法检查结果字符串是否是
// 字符串 first 和 second 的混排
for (String result : results) {
if (checkLength(first, second, result) == true && shuffleCheck(first, second, result) == true) {
System.out.println(result + " 是 " + first + " 和 " + second + " 的有效混排");
}
else {
System.out.println(result + " 不是 " + first + " 和 " + second + " 的有效混排");
}
}
}
}
输出
1XY2 是 XY 和 12 的有效混排
Y1X2 是 XY 和 12 的有效混排
Y21XX 不是 XY 和 12 的有效混排
在上面的示例中,我们有一个名为 results
的字符串数组。它包含三个字符串:1XY2
、Y1X2
和 Y21XX
。我们正在检查这三个字符串是否是字符串 first(XY)
和 second(12)
的有效混排。
这里,我们使用了3个方法:
1. checkLength() - 混排字符串中的字符数量应该等于两个字符串中的字符总和。
因此,这个方法检查混排字符串的长度是否与 first
和 second
字符串长度之和相同。
如果长度不相等,就没有必要调用 shuffleCheck()
方法。因此,我们在 if 语句中使用了:
// 在 main 方法内
if (checkLength(first, second, result) == true && shuffleCheck(first, second, result) == true)
2. sortString() - 这个方法将字符串转换为 char
数组,然后使用 Arrays.sort()
方法对数组进行排序。最后,返回排序后的字符串。
由于我们正在将混排字符串与其他两个字符串进行比较,对所有三个字符串进行排序将使比较更加高效。
3. shuffleCheck() - 这个 方法将混排字符串的各个字符与 first
和 second
字符串的字符进行比较。