0
点赞
收藏
分享

微信扫一扫

【Leetcode】1592. Rearrange Spaces Between Words

我是小瘦子哟 2022-05-02 阅读 30

题目地址:

https://leetcode.com/problems/rearrange-spaces-between-words/

给定一个字符串 s s s,是由单词和空格组成,要求返回一个新字符串,在总空格数不变的情况下,使得每两个单词之间的空格数尽可能平均并且最大。如果有过剩的空格则放在末尾。

代码如下:

import java.util.ArrayList;
import java.util.List;

public class Solution {
    public String reorderSpaces(String text) {
        List<String> list = new ArrayList<>();
        int cntW = 0, cntS = 0;
        for (int i = 0; i < text.length(); i++) {
            int j = i;
            if (text.charAt(j) != ' ') {
                while (j < text.length() && text.charAt(j) != ' ') {
                    j++;
                }
                list.add(text.substring(i, j));
                cntW++;
            } else {
                while (j < text.length() && text.charAt(j) == ' ') {
                    j++;
                    cntS++;
                }
            }
            
            i = j - 1;
        }
        
        StringBuilder sb = new StringBuilder();
        if (cntW == 1) {
            sb.append(list.get(0)).append(" ".repeat(cntS));
            return sb.toString();
        }
        
        int len = cntS / (cntW - 1);
        for (int i = 0; i < list.size(); i++) {
            sb.append(list.get(i));
            if (i != list.size() - 1) {
                sb.append(" ".repeat(len));
            }
        }
        
        sb.append(" ".repeat(cntS % (cntW - 1)));
        return sb.toString();
    }
}

时空复杂度 O ( l s ) O(l_s) O(ls)

举报

相关推荐

0 条评论