leetcode算法總結之字符串除空格操作

給定字符串(ASCII碼0-255)數組,請在不開闢額外空間的情況下刪除開始和結尾處的空格,並將中間的多個連續的空格合併成一個。例如:"   i    am a      little boy.    ",變成"i am a little boy",語言不限,但不要用僞代碼作答,函數輸入輸出請參考如下的函數原型:

C++函數原型:

void FormatString(char str[],int len){

}

首先是字符串數組操作,不需要再申請內存空間,通過下標訪問字符;其次是空格在字符

串中的表示‘ ’,與‘\0’區分開;

'\0'表示字符串結束符,代表字符串結束,而空格是一個普通字符,顯示在文本中可以選中。
'\0'的ASCII碼爲0,空格的ASCII碼爲32。

代碼實現:

void FormatString(char str[], int len)
{
  if(str == NULL || len <= 0)
  return;
 
  int i = 0, j = 0;
  while(str[i] == ' ')//開頭的空格
    i++;
  while(str[i] != '\0')
  {
    if(str[i] == ' ' && (str[i+1] == ' ' || str[i+1] == '\0'))
    {
//中間或者結尾的空格
        i++;
        continue;
    }
    str[j++] = str[i++];
  }
  str[j] = '\0';
}

發佈了68 篇原創文章 · 獲贊 45 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章