📅  最后修改于: 2023-12-03 15:07:33.905000             🧑  作者: Mango
本题是一道经典的计算机科学问题,也是面试中经常出现的问题。 题意为:给定两个字符串 S 和 T,请编写一个函数来确定 S 是否是 T 的重新排列之一。
public static boolean isPermutation(String S, String T) {
if (S.length() != T.length()) {
return false;
}
// 将字符串转换成字符数组
char[] sArr = S.toCharArray();
char[] tArr = T.toCharArray();
// 对字符数组进行排序
Arrays.sort(sArr);
Arrays.sort(tArr);
// 使用双指针遍历两个数组
int i = 0, j = 0;
while (i < sArr.length && j < tArr.length) {
if (sArr[i] != tArr[j]) {
return false;
}
i++;
j++;
}
return true;
}
public static void main(String[] args) {
String S = "abcdefg";
String T = "gfedcba";
System.out.println(isPermutation(S, T)); // true
String S2 = "hello";
String T2 = "world";
System.out.println(isPermutation(S2, T2)); // false
}
本题考察了计算机科学中的算法知识,尤其是排序和双指针遍历。在实际编码中要注意代码的简洁性和可读性,以便于他人理解和维护。同时,需要注意测试数据的严谨性,以保证程序的正确性。