LintCode:686 · 删除多余的空格

2021-12-31  本文已影响0人  alex很累

问题描述

从句子中删除多余空格

样例

样例1:
输入: s = "The  sky   is blue"
输出:  "The sky is blue"

样例2:
输入: s = "  low               ercase  "
输出: "low ercase"

解题思路

  1. 先去首尾空格;
  2. 新建一个字符串用于保存结果;遍历输入的字符串,记一个flag用于表示前面的字符是不是空格:
    A. 如果当前字符不是空格,添加到新字符串中,flag置为false;
    B. 如果当前字符是空格且flagfalse,将空格添加到新字符串中,flag置为true;
    C. 如果当前字符是空格且flagtrue,无需任何操作。

代码示例(JAVA)

public class Solution {
    /**
     * @param s: the original string
     * @return: the string without arbitrary spaces
     */
    public String removeExtra(String s) {
        s = s.trim();

        StringBuilder result = new StringBuilder();
        boolean beforeFlag = false;
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (c != ' ') {
                result.append(c);
                beforeFlag = false;
            } else if (!beforeFlag) {
                result.append(c);
                beforeFlag = true;
            }
        }

        return result.toString();
    }
}
上一篇 下一篇

猜你喜欢

热点阅读