最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java C++題解leetcode判定是否為字符重排

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

題目要求

思路一:排序

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);
    }
}
  • 時(shí)間復(fù)雜度:O(n log n),排序復(fù)雜度
  • 空間復(fù)雜度: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;
    }
};
  • 時(shí)間復(fù)雜度:O(nlog?n)O(n\log n)O(nlogn),排序復(fù)雜度
  • 空間復(fù)雜度: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
        }
    }
}
  • 時(shí)間復(fù)雜度:O(n log? n),排序復(fù)雜度
  • 空間復(fù)雜度:O(n),拷貝字符串用于排序

思路二:詞頻統(tǒng)計(jì)

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;
    }
}
  • 時(shí)間復(fù)雜度:O(n)
  • 空間復(fù)雜度: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;
    }
};
  • 時(shí)間復(fù)雜度:O(n)
  • 空間復(fù)雜度: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)
    }
}
  • 時(shí)間復(fù)雜度:O(n)
  • 空間復(fù)雜度:O(C),常數(shù)C為字符集大小

總結(jié)

簡單模擬題、快樂結(jié)束~

有些語言不能改的字符串在這種時(shí)候真是煩煩……

以上就是Java C++題解leetcode判定是否為字符重排的詳細(xì)內(nèi)容,更多關(guān)于Java C++ 判定是否為字符重排的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C++報(bào)錯(cuò)`Null Pointer Dereference`的解決方法

    C++報(bào)錯(cuò)`Null Pointer Dereference`的解決方法

    在軟件開發(fā)中,Null Pointer Dereference 是一種常見的錯(cuò)誤,它發(fā)生在程序試圖訪問或操作一個(gè)空指針指向的內(nèi)存位置時(shí),這種情況通常會(huì)導(dǎo)致程序崩潰,給 debug 工作帶來很大困擾,今天,我們將探討如何解決 Null Pointer Dereference 報(bào)錯(cuò),需要的朋友可以參考下
    2024-07-07
  • C++預(yù)定義的流對(duì)象基本示例詳解

    C++預(yù)定義的流對(duì)象基本示例詳解

    這篇文章主要為大家介紹了C++預(yù)定義的流對(duì)象基本示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • Dijkstra算法最短路徑的C++實(shí)現(xiàn)與輸出路徑

    Dijkstra算法最短路徑的C++實(shí)現(xiàn)與輸出路徑

    今天小編就為大家分享一篇關(guān)于Dijkstra算法最短路徑的C++實(shí)現(xiàn)與輸出路徑,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • c語言處理函數(shù)調(diào)用的方法

    c語言處理函數(shù)調(diào)用的方法

    函數(shù)就是一段封裝好的,可以重復(fù)使用的代碼,它使得我們的程序更加模塊化,不需要編寫大量重復(fù)的代碼。這篇文章主要介紹了c語言是如何處理函數(shù)調(diào)用的?需要的朋友可以參考下
    2021-11-11
  • C/C++ Qt TreeWidget 嵌套節(jié)點(diǎn)操作使用

    C/C++ Qt TreeWidget 嵌套節(jié)點(diǎn)操作使用

    本文主要介紹了TreeWidget的如何使用,實(shí)現(xiàn)對(duì)樹形框多節(jié)點(diǎn)的各種操作,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 淺談C/C++中指針和數(shù)組的不同

    淺談C/C++中指針和數(shù)組的不同

    本文主要解析了C/C++中數(shù)組和指針的區(qū)別,文章簡單易懂,對(duì)各位的工作學(xué)習(xí)有所幫助,有需求的朋友可以了解下
    2020-05-05
  • C語言創(chuàng)建線程thread_create()的方法

    C語言創(chuàng)建線程thread_create()的方法

    這篇文章主要介紹了C語言創(chuàng)建線程thread_create()的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 詳解 linux c++的編譯器g++的基本使用

    詳解 linux c++的編譯器g++的基本使用

    這篇文章主要介紹了詳解 linux c++的編譯器g++的基本使用的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • C指針原理教程之編譯原理-小型計(jì)算器實(shí)現(xiàn)

    C指針原理教程之編譯原理-小型計(jì)算器實(shí)現(xiàn)

    本文給大家分享的是如何使用C語言編寫一個(gè)小型計(jì)算器的實(shí)例代碼,有需要的小伙伴可以參考下
    2019-02-02
  • C++共享內(nèi)存刪除的陷阱

    C++共享內(nèi)存刪除的陷阱

    這篇文章主要介紹了C++共享內(nèi)存刪除的陷阱講解,當(dāng)進(jìn)程結(jié)束使用共享內(nèi)存區(qū)時(shí),要通過函數(shù) shmdt 斷開與共享內(nèi)存區(qū)的連接。下面來看看具體問題都是怎么解決的吧
    2022-01-01

最新評(píng)論

孝昌县| 西平县| 霞浦县| 鄂州市| 尚志市| 洛川县| 靖远县| 临朐县| 财经| 通许县| 突泉县| 比如县| 潼南县| 阳高县| 永吉县| 秭归县| 瑞安市| 芦溪县| 临海市| 陈巴尔虎旗| 泰来县| 莫力| 盐津县| 南康市| 新乐市| 策勒县| 梅州市| 康平县| 名山县| 晋江市| 射阳县| 正定县| 遵化市| 泰安市| 囊谦县| 句容市| 会宁县| 兴安盟| 延津县| 民丰县| 普兰县|