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

Java C++算法題解leetcode1592重新排列單詞間的空格

 更新時(shí)間:2022年09月14日 10:28:13   作者:AnjaVon  
這篇文章主要為大家介紹了Java C++算法題解leetcode1592重新排列單詞間的空格示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

題目要求

思路:模擬

  • 模擬就完了
  • 統(tǒng)計(jì)空格數(shù)量和單詞數(shù)量,計(jì)算單詞間應(yīng)有的空格數(shù),將它們依次放入結(jié)果字符串,若有余數(shù)則在末尾進(jìn)行填補(bǔ)。

Java

class Solution {
    public String reorderSpaces(String text) {
        int n = text.length(), spcnt = 0;
        List<String> words = new ArrayList<>();
        for (int i = 0; i < n; ) {
            if (text.charAt(i) == ' ' && ++i >= 0 && ++spcnt >= 0)
                continue;
            int j = i;
            while (j < n && text.charAt(j) != ' ')
                j++;
            words.add(text.substring(i, j)); // 單詞
            i = j;
        }
        StringBuilder res = new StringBuilder();
        int m = words.size(), dis = spcnt / Math.max(m - 1, 1);
        String spcs = ""; // 兩單詞間的空格
        while (dis-- > 0)
            spcs += " ";
        for (int i = 0; i < m; i++) {
            res.append(words.get(i));
            if (i != m - 1)
                res.append(spcs);
        }
        while (res.length() != n)
            res.append(" ");
        return res.toString();
    }
}
  • 時(shí)間復(fù)雜度:O(n)
  • 空間復(fù)雜度:O(n),結(jié)果的空間開銷

C++

class Solution {
public:
    string reorderSpaces(string text) {
        int n = text.size(), spcnt = 0;
        vector<string> words;
        for (int i = 0; i < n; ) {
            if (text[i] == ' ' && ++i >= 0 && ++spcnt >= 0)
                continue;
            int j = i;
            while (j < n && text[j] != ' ')
                j++;
            words.emplace_back(text.substr(i, j - i)); // 單詞
            i = j;
        }
        string res;
        int m = words.size(), dis = spcnt / max(m - 1, 1);
        string spcs = ""; // 兩單詞之間的空格
        while (dis-- > 0)
            spcs += " ";
        for (int i = 0; i < m; i++) {
            res += words[i];
            if (i != m - 1)
                res += spcs;
        }
        while (res.size() != n)
            res += " ";
        return res;
    }
};
  • 時(shí)間復(fù)雜度:O(n)
  • 空間復(fù)雜度:O(n),結(jié)果的空間開銷

Rust

  • rust有很方便的函數(shù)用以統(tǒng)計(jì)空格和單詞,也有很方便的repeat構(gòu)成單詞之間需要的空格。
impl Solution {
    pub fn reorder_spaces(text: String) -> String {
        let spcnt = text.chars().filter(|&c| c == ' ').count();
        let words: Vec<String> = text.split_whitespace().map(|s| s.to_string()).collect();
        let mut res = String::new();
        if words.len() == 1 {
            res.push_str(&words[0]);
            res.push_str(&" ".repeat(spcnt));
            return res
        }     
        for i in 0..words.len() {
            res.push_str(&words[i]);
            res.push_str(&" ".repeat(
                if i < words.len() - 1 {
                    spcnt / (words.len() - 1)
                }
                else {
                    spcnt - spcnt / (words.len() - 1) * (words.len() - 1)
            }));
        }
        res
    }
}
  • 時(shí)間復(fù)雜度:O(n)
  • 空間復(fù)雜度:O(n),結(jié)果的空間開銷

以上就是Java C++算法題解leetcode1592重新排列單詞間的空格的詳細(xì)內(nèi)容,更多關(guān)于Java C++ 單詞間空格重排的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • win32使用openfilename瀏覽文件窗口示例

    win32使用openfilename瀏覽文件窗口示例

    這篇文章主要介紹了使用win32 API打開瀏覽文件窗口,使用OPENFILENAME結(jié)構(gòu)體來實(shí)現(xiàn)這個(gè)功能,需要的朋友可以參考下
    2014-02-02
  • C++ Boost Graph算法超詳細(xì)精講

    C++ Boost Graph算法超詳細(xì)精講

    這篇文章主要介紹了C++ Boost Graph算法,我門嘗試使用Boost.Graph庫來運(yùn)行Goldberg的最大流算法。 Boost.Graph將其稱為push_relabel_max_flow
    2022-10-10
  • java 出現(xiàn)NullPointerException的原因及解決辦法

    java 出現(xiàn)NullPointerException的原因及解決辦法

    這篇文章主要介紹了java 出現(xiàn)NullPointerException的原因及解決辦法的相關(guān)資料,這里說明出現(xiàn)NullPointerException 的原因的總結(jié),并說明該如何解決,需要的朋友可以參考下
    2017-08-08
  • C++實(shí)現(xiàn)LeetCode(206.倒置鏈表)

    C++實(shí)現(xiàn)LeetCode(206.倒置鏈表)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(206.倒置鏈表),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++實(shí)現(xiàn)圖書管理系統(tǒng)課程設(shè)計(jì)(面向?qū)ο?

    C++實(shí)現(xiàn)圖書管理系統(tǒng)課程設(shè)計(jì)(面向?qū)ο?

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)圖書管理系統(tǒng)課程設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++與Lua交互內(nèi)存分配詳解

    C++與Lua交互內(nèi)存分配詳解

    C/C++ 與 Lua 的交互是通過 lua_State 這一句柄進(jìn)行交互,我們常規(guī)的創(chuàng)建都是通過 luaL_newstate 這一輔助函數(shù),這篇文章主要給大家詳細(xì)介紹了C++與Lua交互內(nèi)存分配,文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下
    2023-11-11
  • C++排序算法之冒泡排序解析

    C++排序算法之冒泡排序解析

    這篇文章主要介紹了C++排序算法之冒泡排序解析,從左到右,相鄰兩數(shù)兩兩比較,若下標(biāo)小的數(shù)大于下標(biāo)大的數(shù)則交換,將最大的數(shù)放在數(shù)組的最后一位,,再次遍歷數(shù)組,將第二大的數(shù),放在數(shù)組倒數(shù)第二的位置,以此類推,直到數(shù)組有序需要的朋友可以參考下
    2023-10-10
  • C++基于EasyX庫實(shí)現(xiàn)拼圖小游戲

    C++基于EasyX庫實(shí)現(xiàn)拼圖小游戲

    這篇文章主要為大家詳細(xì)介紹了C++基于EasyX庫實(shí)現(xiàn)拼圖小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C++詳細(xì)講解常用math函數(shù)的用法

    C++詳細(xì)講解常用math函數(shù)的用法

    C++提供了很多實(shí)用的數(shù)學(xué)函數(shù),如果要使用先添加頭文件,當(dāng)然,加頭文件誰都知道,接下來我們一起詳細(xì)看看各個(gè)math函數(shù)的實(shí)際使用
    2022-04-04
  • C語言圣誕樹的實(shí)現(xiàn)示例

    C語言圣誕樹的實(shí)現(xiàn)示例

    本篇主要介紹了C語言圣誕樹的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12

最新評(píng)論

清水河县| 双辽市| 江西省| 淮北市| 武功县| 报价| 丹凤县| 巴中市| 尼勒克县| 滨州市| 靖安县| 舟曲县| 华阴市| 皋兰县| 嘉义市| 阿巴嘎旗| 东安县| 阜新市| 平昌县| 湘阴县| 泽普县| 西盟| 黑龙江省| 遂川县| 汾西县| 白山市| 疏勒县| 靖江市| 敦化市| 清苑县| 库车县| 黄陵县| 马尔康县| 神农架林区| 无极县| 定州市| 进贤县| 田东县| 伊春市| 苍溪县| 宝应县|