原地删除字符数组中多余空格

131 阅读1分钟
给定char数组, 要求在原地清除前置空格后置空格, 字符间只允许保留一个空格.

例如: 
输入 "  a  good  example  ";
输出 "a good example"
// 原地删除前置空格和后置空格, 以及内部多余的空格, 返回新字符串长度
public int trim(char[] str) {
     int i = 0;
     int n = str.length;
     int k = 0; // 记录删除多余空格之后的数组长度
     while (i<n && str[i] == ' ') {
         i++;
     }
     while (i<n) {
         if(str[i] == ' ') { // 删除内部多余空格和末尾空格
            if(i+1 < n && str[i+1] != ' ') {
                str[k++] = ' ';
            }
         } else {
             str[k++] = str[i];
         }
         i++;
     }
     return k;
}