算法題,文本左右對齊

/*** 給定一個單詞數組 words 和一個長度 maxWidth ,重新排版單詞,使其成為每行恰好有 maxWidth 個字符,且左右兩端對齊的文本。** 你應該使用 “貪心算法” 來放置給定的單詞;也就是說,盡可能多地往每行中放置單詞。必要時可用空格 ' ' 填充,使得每行恰好有 maxWidth 個字符。** 要求盡可能均勻分配單詞間的空格數量。如果某一行單詞間的空格不能均勻分配,則左側放置的空格數要多于右側的空格數。** 文本的最后一行應為左對齊,且單詞之間不插入額外的空格。** 注意:** 單詞是指由非空格字符組成的字符序列。* 每個單詞的長度大于 0,小于等于 maxWidth。* 輸入單詞數組 words 至少包含一個單詞。

上代碼:

        public List<String> fullJustify(String[] words, int maxWidth) {List<String> answer =new ArrayList<>();int right =0 ,n =words.length;while (true){int left = right;// 當前行的第一個單詞在 words 的位置int sumlen =0; // 統計這一行單詞長度之和// 循環確定當前行可以放多少單詞,注意單詞之間應至少有一個空格while ( right <n&& sumlen+words[right].length() +right-left <=maxWidth){sumlen += words[right++].length();}if (right ==n){StringBuffer sb = mjoin(words,left,n," ");sb.append(blank(maxWidth -sb.length()));answer.add(sb.toString());return answer;}int numWords =right -left;int numSpaces =maxWidth -sumlen;// 當前行只有一個單詞:該單詞左對齊,在行末填充剩余空格if (numWords ==1){StringBuffer sb = new StringBuffer(words[left]);sb.append(blank(numSpaces));answer.add(sb.toString());continue;}// 當前行不只一個單詞int avgSpaces =numSpaces/(numWords-1);int extraSpaces =numSpaces%(numWords -1);StringBuffer sb =new StringBuffer();sb.append(mjoin(words,left,left+extraSpaces+1,blank(avgSpaces+1)));sb.append(blank(avgSpaces));sb.append(mjoin(words, left + extraSpaces + 1, right, blank(avgSpaces))); // 拼接其余單詞answer.add(sb.toString());}}// blank 返回長度為 n 的由空格組成的字符串public String blank(int n) {StringBuffer sb = new StringBuffer();for (int i = 0; i < n; ++i) {sb.append(' ');}return sb.toString();}join 返回用 sep 拼接 [left, right) 范圍內的 words 組成的字符串private StringBuffer mjoin(String[] words, int left, int right, String sep) {StringBuffer sb =new StringBuffer(words[left]);for (int i =left+1; i < right;i++){sb.append(sep);sb.append(words[i]);}return sb;}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/207225.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/207225.shtml
英文地址,請注明出處:http://en.pswp.cn/news/207225.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ubuntu22.04系統更改完resolv.conf后 重啟網絡服務后resolv.conf被重置

vi /etc/systemd/resolved.conf&#xff0c; [Resolve] DNS8.8.8.8 114.114.114.114 192.168.4.2 2.重啟域名解析服務 systemctl restart systemd-resolved systemctl enable systemd-resolved 3.備份當前的/etc/resolve.conf&#xff0c;并重新設置/run/systemd/resolve/res…

Docker 安裝 Centos和寶塔

1. 安裝centos docker pull centos:centos7 2. 創建docker容器&#xff1a;newbt 代表容器名 docker run -i -t -d --name newbt -p 2000:20 -p 2100:21 -p 8000:80 -p 4430:443 -p 8880:888 -p 8888:8888 -p 38444:38444 -p 2200:22 -p 2300:23 -p 2500:25 -p 3306:3306 -p 6…

c++ 解析zip文件,實現對流式文件pptx內容的修改

libzip 官網地址&#xff1a;示例代碼 #include <iostream> #include <cstdlib> #include <cstring> #include <ctime> #include <zip.h>//解析原始zip內容&#xff0c;保存為新的zip文件 int ziptest(const char* inputPath, const char* out…

vue pc官網頂部導航欄組件

官網頂部導航分為一級導航和二級導航 導航的樣子 文件的層級 router 文件層級 header 組件代碼 <h1 class"logo-wrap"><router-link to"/"><img class"logo" :src"$config.company.logo" alt"" /><i…

直面雙碳目標,優維科技攜手奧意建筑打造綠色低碳建筑數智云平臺

優維“雙碳”戰略合作建筑 為落實創新驅動發展戰略&#xff0c;增強深圳工程建設領域科技創新能力&#xff0c;促進技術進步、科技成果轉化和推廣應用&#xff0c;根據《深圳市工程建設領域科技計劃項目管理辦法》《深圳市住房和建設局關于組織申報2022年深圳市工程建設領域科…

K8S集群優化的可執行優化

目錄 前期環境優化 1.永久關閉交換分區 2.#加載 ip_vs 模塊 3.調整內核參數 4.#使用Systemd管理的Cgroup來進行資源控制與管理 5.開機自啟kubelet 6.內核參數優化方案 7.etcd優化 默認etcd空間配額大小為 2G&#xff0c;超過 2G 將不再寫入數據。通過給etcd配置 --quo…

IO流(Java)

IO流 在學習IO流之前&#xff0c;我們首先了解一下File File File即文件或文件夾路徑對象&#xff0c;其示例類可以是存在路徑也可以是未創造路徑 File有什么用 用于創建或操作文件或文件夾 File常用API API部分看得懂會查會用即可 IO流 IO(Input 讀數據 Output寫數據…

Qt/QML編程學習之心得:工程中的文件(十二)

Qt生成了工程之后,尤其在QtCreator產生對應的project項目之后,就如同VisualStudio一樣,會產生相關的工程文件,那么這些工程文件都是做什么的呢?這里介紹一下。比如產生了一個Qt Widget application,當然如果Qt Quick Application工程會有所不同。 一、.pro和.pro.user …

企業計算機服務器中了360勒索病毒如何解密,勒索病毒解密數據恢復

網絡技術的不斷應用與發展&#xff0c;為企業的生產運營提供了極大便利&#xff0c;但隨之而來的網絡安全威脅也不斷增加。近期&#xff0c;云天數據恢復中心接到很多企業的求助&#xff0c;企業的計算機服務器遭到了360后綴勒索病毒攻擊&#xff0c;導致企業的所有數據被加密&…

游戲策劃常用的ChatGPT通用提示詞模板

游戲設計&#xff1a;請幫助我設計一個有趣的游戲。 游戲玩法&#xff1a;如何設計游戲的玩法&#xff1f; 游戲機制&#xff1a;如何設計游戲的機制&#xff1f; 游戲平衡&#xff1a;如何平衡游戲中的各種元素&#xff1f; 游戲美術&#xff1a;如何設計游戲的美術風格&a…

『PyTorch學習筆記』如何快速下載huggingface模型/數據—全方法總結

如何快速下載huggingface模型/數據—全方法總結 文章目錄 一. 如何快速下載huggingface大模型1.1. IDM(Windows)下載安裝連接1.2. 推薦 huggingface 鏡像站1.3. 管理huggingface_hub cache-system(緩存系統) 二. 參考文獻 一. 如何快速下載huggingface大模型 推薦 huggingface…

希亦洗地機跟追覓洗地機入手哪個更好?追覓跟希亦洗地機深度評估

近年來&#xff0c;洗地機可以同時處理干濕垃圾&#xff0c;同時降低用戶在清潔過程中的勞動強度&#xff0c;成為了家居清潔的新寵&#xff0c;但是目前市場上的品牌和型號層出不窮。用戶往往很難挑選&#xff0c;本文挑選了兩款目前口碑最好的兩款洗地機給大家做一個全面的評…

Android 記錄一些Framework開發的命令

源碼編譯流程 1. "source build/envsetup.sh" (source可以用 . 代替&#xff0c;即". build/envsetup.sh") 2. "lunch"&#xff0c;并選擇要編譯的項目或者"choosecombo" 3. "make idegen -j4" (這里的 -j4 表示用4線程來…

LeeCode每日刷題12.8

搜索插入位置 給定一個排序數組和一個目標值&#xff0c;在數組中找到目標值&#xff0c;并返回其索引。如果目標值不存在于數組中&#xff0c;返回它將會被按順序插入的位置。 請必須使用時間復雜度為 O(log n) 的算法。 示例 1: 輸入: nums [1,3,5,6], target 5 輸出: …

外貿行業的CRM系統和其它CRM有什么區別?

外貿行業對客戶管理的追求日益提高&#xff0c;為了應對客戶需求的變化和多元性&#xff0c;外貿企業需要借助CRM管理系統實現智能管理。下面&#xff0c;我們將詳細探討外貿CRM的概念、特點和具體應用。 什么是外貿CRM&#xff1f; 外貿CRM是指針對外貿行業的客戶關系管理系…

Nginx+Promtail+Loki+Grafana 升級ELK強大工具

最近客戶有個新需求,就是想查看網站的訪問情況,由于網站沒有做google的統計和百度的統計,所以訪問情況,只能通過日志查看,通過腳本的形式給客戶導出也不太實際,給客戶寫個簡單的頁面,咱也做不到 成熟的日志解決方案,那就是ELK,還有現在比較火的Loki,(當然還有很多其…

兩電腦共享鼠標鍵盤方案

一開始使用的是shareMouse 但是需要注冊還有很多不穩定問題 后來想買個雙拷線&#xff0c;又太貴&#xff0c;感覺不值的。 再后來&#xff0c;發現微軟有自己的系統上的 共享方案 &#xff0c;叫做 Mouse without Borders ,而且是免費的&#xff0c;只能在window電腦上使用…

Linus:我休假的時候也會帶著電腦,否則會感覺很無聊

目錄 Linux 內核最新版本動態 關于成為內核維護者 代碼好寫&#xff0c;人際關系難處理 內核維護者老齡化 內核中 Rust 的使用 關于 AI 的看法 參考 12.5-12.6 日&#xff0c;Linux 基金會組織的開源峰會&#xff08;OSS&#xff0c;Open Source Summit&#xff09;在日…

基于Java酒店管理系統

基于Java酒店管理系統 功能需求 1、客房管理&#xff1a;系統需要提供客房的信息管理功能&#xff0c;包括客房的類型、數量、價格、狀態&#xff08;如空閑、已預訂、已入住等&#xff09;等信息。此外&#xff0c;系統還應支持對客房信息的修改和查詢操作。 2、預訂管理&a…

日常開發日志

目錄 1、idea開發服務啟動的網頁地址不顯示前端樣式&#xff1a; 2、java Date 與myibits 的空判斷&#xff1a; 1、idea開發服務啟動的網頁地址不顯示前端樣式&#xff1a; idea開發時&#xff0c;tomcat啟動的后端彈出的網頁地址&#xff0c;呈現的網頁沒有樣式&#xff0…