給定兩個字串 s1
和 s2
,請編寫一個程式,確定其中一個字串的字元重新排列後,能否變成另一個字串。
示例 1:
輸入: s1 = "abc", s2 = "bca"
輸出: true
示例 2:
輸入: s1 = "abc", s2 = "bad"
輸出: false
說明:
0 <= len(s1) <= 100
0 <= len(s2) <= 100
class Solution {
public boolean CheckPermutation(String s1, String s2) {
int length1 = s1.length();
int length2 = s2.length();
if (length1 != length2) {
return false;
}
int []index = new int[128];
for (int i = 0; i < length1; i++) {
index[s1.charAt(i)] ++;
index[s2.charAt(i)] --;
}
for (int i = 0; i < 128; i++) {
if (index[i] != 0) {
return false;
}
}
return true;
}
}
時間複雜度
O(200)
注意點
int []index = new int[128];
。index 陣列大小應為128
,而不是100
。因為我們使用字母的 ASCII 碼作為下標,z
的 ASCII 碼是122
。所以至少要保證大於122
。同理,第二層 for 迴圈的迴圈次數不應該是
s1.length()
,而應該是我們上面定義的 index 的陣列大小128
。
來源:力扣(LeetCode)
連結:leetcode-cn.com/problems/check-per...
本作品採用《CC 協議》,轉載必須註明作者和本文連結