欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

題目要求

思路:模擬

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

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();
    }
}
  • 時間復雜度:O(n)
  • 空間復雜度:O(n),結果的空間開銷

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;
    }
};
  • 時間復雜度:O(n)
  • 空間復雜度:O(n),結果的空間開銷

Rust

  • rust有很方便的函數(shù)用以統(tǒng)計空格和單詞,也有很方便的repeat構成單詞之間需要的空格。
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
    }
}
  • 時間復雜度:O(n)
  • 空間復雜度:O(n),結果的空間開銷

以上就是Java C++算法題解leetcode1592重新排列單詞間的空格的詳細內容,更多關于Java C++ 單詞間空格重排的資料請關注腳本之家其它相關文章!

相關文章

  • Qt編寫地圖實現(xiàn)閃爍點圖的示例代碼

    Qt編寫地圖實現(xiàn)閃爍點圖的示例代碼

    閃爍點圖的核心有三個要素,城市的名稱、城市的經(jīng)緯度、對應值的大小,當值越大閃爍點也就越大,本文就來實現(xiàn)一下地圖閃爍點圖,具有一定的參考價值,感興趣的可以了解一下
    2021-12-12
  • 詳解C++17中類模板參數(shù)推導的使用

    詳解C++17中類模板參數(shù)推導的使用

    自C++17起就通過使用類模板參數(shù)推導,只要編譯器能根據(jù)初始值推導出所有模板參數(shù),那么就可以不指明參數(shù),下面我們就來看看C++17中類模板參數(shù)推導的具體使用吧
    2024-03-03
  • C語言指針如何實現(xiàn)字符串逆序反轉

    C語言指針如何實現(xiàn)字符串逆序反轉

    這篇文章主要介紹了C語言指針如何實現(xiàn)字符串逆序反轉,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Qt簡單實現(xiàn)密碼器控件

    Qt簡單實現(xiàn)密碼器控件

    這篇文章主要為大家詳細介紹了Qt簡單實現(xiàn)密碼器控件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C++中strlen函數(shù)的三種實現(xiàn)方法

    C++中strlen函數(shù)的三種實現(xiàn)方法

    在C語言中我們要獲取字符串的長度,可以使用strlen?函數(shù),strlen?函數(shù)計算字符串的長度時,直到空結束字符,但不包括空結束字符,因為strlen函數(shù)時不包含最后的結束字符的,因此一般使用strlen函數(shù)計算的字符串的長度會比使用sizeof計算的字符串的字節(jié)數(shù)要小
    2022-05-05
  • C++深入淺出講解希爾排序算法的實現(xiàn)

    C++深入淺出講解希爾排序算法的實現(xiàn)

    希爾排序是希爾(Donald Shell)于1959年提出的一種排序算法。希爾排序也是一種插入排序,它是簡單插入排序經(jīng)過改進之后的一個更高效的版本,也稱為縮小增量排序,同時該算法是沖破O(n2)的第一批算法之一。本文會以圖解的方式詳細介紹希爾排序的基本思想及其代碼實現(xiàn)
    2022-05-05
  • OpenCV中的cv::Mat函數(shù)將數(shù)據(jù)寫入txt文件

    OpenCV中的cv::Mat函數(shù)將數(shù)據(jù)寫入txt文件

    這篇文章主要介紹了OpenCVcv::Mat中的數(shù)據(jù)按行列寫入txt文件中,需要的朋友可以參考下
    2018-05-05
  • C++數(shù)據(jù)結構之list詳解

    C++數(shù)據(jù)結構之list詳解

    list是一種序列式容器。list容器完成的功能實際上和數(shù)據(jù)結構中的雙向鏈表是極其相似的,list中的數(shù)據(jù)元素是通過鏈表指針串連成邏輯意義上的線性表,也就是list也具有鏈表的主要優(yōu)點,即:在鏈表的任一位置進行元素的插入、刪除操作都是快速的
    2021-11-11
  • 基于MFC實現(xiàn)類的序列化詳解

    基于MFC實現(xiàn)類的序列化詳解

    序列化是將程序中的對象以一種二進制格式存儲到存儲設備中(例如文本/數(shù)據(jù)庫等),以實現(xiàn)“永生”或隨意“流動”。本文將為大家詳細講講如何基于MFC實現(xiàn)類的序列化,需要的可以參考一下
    2022-07-07
  • C語言實現(xiàn)切片數(shù)組的示例詳解

    C語言實現(xiàn)切片數(shù)組的示例詳解

    由于c語言沒有集合類的標準庫,需要用時只能自己實現(xiàn),所以本文參考了go語言的slice,找到了一種非常簡化的動態(tài)數(shù)組接口,下面我們就來看看如何在C語言中實現(xiàn)切片吧
    2024-03-03

最新評論