Java C++題解leetcode判定是否為字符重排
更新時間:2022年09月29日 15:01:51 作者:AnjaVon
這篇文章主要為大家介紹了Java C++題解leetcode判定是否為字符重排,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
題目要求

思路一:排序
Java
class Solution {
public boolean CheckPermutation(String s1, String s2) {
if(s1.length() != s2.length())
return false;
char[] sort1 = s1.toCharArray();
Arrays.sort(sort1);
char[] sort2 = s2.toCharArray();
Arrays.sort(sort2);
return Arrays.equals(sort1, sort2);
}
}
- 時間復雜度:O(n log n),排序復雜度
- 空間復雜度:O(n),拷貝字符串用于排序
C++
class Solution {
public:
bool CheckPermutation(string s1, string s2) {
if (s1.size() != s2.size())
return false;
sort(s1.begin(), s1.end());
sort(s2.begin(), s2.end());
return s1 == s2;
}
};
- 時間復雜度:O(nlog?n)O(n\log n)O(nlogn),排序復雜度
- 空間復雜度:O(log?n)O(\log n)O(logn),排序需要
Rust
impl Solution {
pub fn check_permutation(s1: String, s2: String) -> bool {
if s1.len() != s2.len() {
false
}
else {
let (mut sort1, mut sort2) = (s1.as_bytes().to_vec(), s2.as_bytes().to_vec());
sort1.sort();
sort2.sort();
sort1 == sort2
}
}
}
- 時間復雜度:O(n log? n),排序復雜度
- 空間復雜度:O(n),拷貝字符串用于排序
思路二:詞頻統(tǒng)計
Java
class Solution {
public boolean CheckPermutation(String s1, String s2) {
if(s1.length() != s2.length())
return false;
int[] freq = new int[128];
int diff = 0;
for (int i = 0; i < s1.length(); i++) {
if (++freq[s1.charAt(i)] == 1)
diff++;
if (--freq[s2.charAt(i)] == 0)
diff--;
}
return diff == 0;
}
}
- 時間復雜度:O(n)
- 空間復雜度:O(C),常數(shù)C為字符集大小
C++
class Solution {
public:
bool CheckPermutation(string s1, string s2) {
if (s1.size() != s2.size())
return false;
int freq[128];
memset(freq, 0, sizeof(freq));
int diff = 0;
for (int i = 0; i < s1.size(); i++) {
if (++freq[s1[i]] == 1)
diff++;
if (--freq[s2[i]] == 0)
diff--;
}
return diff == 0;
}
};
- 時間復雜度:O(n)
- 空間復雜度:O(C),常數(shù)C為字符集大小
Rust
impl Solution {
pub fn check_permutation(s1: String, s2: String) -> bool {
s1.len() == s2.len() && s1.bytes().zip(s2.bytes()).fold(vec![0; 128], |mut freq, (c1, c2)| {
freq[c1 as usize] += 1;
freq[c2 as usize] -= 1;
freq
}).into_iter().all(|diff| diff == 0)
}
}
- 時間復雜度:O(n)
- 空間復雜度:O(C),常數(shù)C為字符集大小
總結(jié)
簡單模擬題、快樂結(jié)束~
有些語言不能改的字符串在這種時候真是煩煩……
以上就是Java C++題解leetcode判定是否為字符重排的詳細內(nèi)容,更多關于Java C++ 判定是否為字符重排的資料請關注腳本之家其它相關文章!
相關文章
C++報錯`Null Pointer Dereference`的解決方法
在軟件開發(fā)中,Null Pointer Dereference 是一種常見的錯誤,它發(fā)生在程序試圖訪問或操作一個空指針指向的內(nèi)存位置時,這種情況通常會導致程序崩潰,給 debug 工作帶來很大困擾,今天,我們將探討如何解決 Null Pointer Dereference 報錯,需要的朋友可以參考下2024-07-07
Dijkstra算法最短路徑的C++實現(xiàn)與輸出路徑
今天小編就為大家分享一篇關于Dijkstra算法最短路徑的C++實現(xiàn)與輸出路徑,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-02-02
C/C++ Qt TreeWidget 嵌套節(jié)點操作使用
本文主要介紹了TreeWidget的如何使用,實現(xiàn)對樹形框多節(jié)點的各種操作,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11
C語言創(chuàng)建線程thread_create()的方法
這篇文章主要介紹了C語言創(chuàng)建線程thread_create()的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-02-02

