美文网首页
LintCode:686 · 删除多余的空格

LintCode:686 · 删除多余的空格

作者: alex很累 | 来源:发表于2021-12-31 10:28 被阅读0次

    问题描述

    从句子中删除多余空格

    样例

    样例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();
        }
    }
    

    相关文章

      网友评论

          本文标题:LintCode:686 · 删除多余的空格

          本文链接:https://www.haomeiwen.com/subject/jrdgqrtx.html