問題:去除掉字符串中多余的空格,字符串的句首和句尾沒有空格,中間的字符串單詞只能保留一個空格。
解決方案:
直接上小代碼,時間復雜度O(n)。
#include <iostream> using namespace std; void deblank(char string [] ) { char *p = string; //去掉首部空格 while(*p ==' ') { p++; } //去掉中間多余空格 int j=0; while(*p !='\0') { string[j++]=*p++; while(string[j-1]==' '&&*p==' ') { p++; } } //去掉最后一個可能的空格 if(string[j-1]==' ') string[j-1]='\0'; else string[j]='\0'; } int main() { char s[] =" bnnn ad ssss sww df "; deblank(s); cout<<s; return 0; }