在這個(gè)實(shí)例中,我們將檢查一個(gè)字符串是否是 Java 中另外兩個(gè)字符串的有效重組(洗牌)。
要理解此示例,您應(yīng)該了解以下Java編程主題:
class Main { //檢查結(jié)果字符串是否有效打亂第一個(gè)和第二個(gè)字符串 static boolean shuffleCheck(String first, String second, String result) { //檢查結(jié)果長(zhǎng)度是否與 //第一和第二個(gè)結(jié)果的總和 if(first.length() + second.length() != result.length()) { return false; } //跟蹤3個(gè)字符串的每個(gè)字符的變量 int i = 0, j = 0, k = 0; //遍歷結(jié)果的所有字符 while (k != result.length()) { //檢查結(jié)果的第一個(gè)字符是否與第一個(gè)字符串的第一個(gè)字符匹配 if (i < first.length() && first.charAt(i) == result.charAt(k)){ i++; //檢查結(jié)果的第一個(gè)字符是否與第二個(gè)字符串的第一個(gè)字符匹配 }else if (j < second.length() && second.charAt(j) == result.charAt(k)){ j++; //如果字符不匹配 }else { return false; } //訪問(wèn)結(jié)果的下一個(gè)字符 k++; } //在訪問(wèn)結(jié)果的所有字符之后 //如果第一個(gè)或第二個(gè)有一些字符留下 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"}; //調(diào)用方法以檢查結(jié)果字符串是否為 //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+ "有效的重組"); } } } }
輸出結(jié)果
1XY2 是 XY 和 12 有效的重組 Y12X 不是 XY 和 12 有效的重組
在上面的示例中,我們有一個(gè)名為results的字符串?dāng)?shù)組。它包含兩個(gè)字符串:1XY2和Y12X。我們正在檢查這兩個(gè)字符串是否是有效的字符串first(XY)和second(12)。
這里,程序說(shuō)1XY2是一個(gè)有效的洗牌XY和12。但是,Y12X這不是有效的洗牌。
這是因?yàn)閅12X更改了字符串的順序XY。在這里,Y用于之前X。因此,作為有效的重組,應(yīng)保持字符串的順序。