title:
一、將字串中的所有空格用%20替換
二、擴充套件:將兩個有序的陣列連線成乙個有序陣列,第乙個陣列足夠大
thought:
1、原串的記憶體足夠大,在原串中實現替換
2、可開闢新空間,將原串複製到新串的過程中把空格替換
realize:
一、實現第乙個想法:
1、統計原串s中(長度len)空格的個數cnt(cnt為0表示無空格)
2、則新串的長度(newlen)為len+cnt*2+1(1代表結束符)
3、指標p,q分別指向原串和新串的尾部,
*p==' ',用『%20』替換後複製到q
*p!=' ',將此字元複製到q;
結束條件是新串指標q與原串指標p相遇(p==q)
實現第二個想法(此方法較簡單):
1、開闢新記憶體s1(記憶體足夠儲存替換後的字串)
2、依次將s中的字元複製到s1中,遇到空格就用『%20』替換
二、利用替換空格的第乙個思想:
1、計算a2的長度len,以此確定a1的有效長度;
2、從兩個陣列a1、a2的最後一位開始比較,較大的移至a1的有效長度內的尾部;
3、兩個陣列依次左移逐個比較,最終移至陣列的首位,比較結束,移位也結束。
注:在從鍵盤輸入帶空格的字串時不能直接用cin>>s
因為cin遇空格結束,可以用cin.getling(s,size_t)
或者getline(cin,s);
說明:這裡對陣列的合併只在上面提示了思路,還沒有用**實現
#include #include using namespace std;
void replace_space1(char *); //在原串中用%20替換空格(原串記憶體足夠大)
void replace_space2(char *); //開闢新記憶體用%20替換空格
void array_combin(int* ,int* );//將兩個有序陣列組合在一起,形成乙個新陣列,仍保持有序
void replace_space1(char *str)
if(0 == cntspace)
int newlen = len+cntspace*2+1; //+1代表將結束符計入總長
char *end = str+len; //此時end指向的是結束符『\0』
char *newend = str+newlen-1;
//cout << *(str+len-1) << endl; //此時輸出的是str的最後乙個字元(非結束符)
//cout << "len=" << len << endl;
//cout << "newlen=" << newlen << endl;
while(end != newend)
else
}cout << "空格被替換後得到的新字串:" << endl;
cout << str << endl;
}void replace_space2(char *str)
if(0 == cntspace)
int newlen = len+cntspace*2+1; //+1代表將結束符計入總長
char *s1 = new char[newlen];
p = str;
char *q = s1;
while (*p != '\0')
else
*q++ = *p++;
} *q = '\0';
cout <<"替換空格後的新字串:" << endl;
cout << s1 << endl;
}int main()
去掉字串中的所有空格
編寫函式,要求去掉字串中的所有空格 根據題目要求,首先我們應該清楚這個題可以有好幾種方法來解決,最先應該想到用陣列。方法 1 定義乙個指標遍歷整個字串,若該指標遍歷到的字元不是空格的話,就將該字元放到乙個臨時的陣列裡,知道遇到 0 為止,那麼這個臨時的陣列中存放的就是去掉所有空格的字串,然後再將臨時...
javascript 替換字串中的所有空格
為string物件原型新增trim方法,去掉字串前後的空格 string.prototype.trim function var s leading and trailing spaces 源字串顯示 leading and trailing spaces 28 window.alert s s.l...
C 去掉字串中首尾空格和所有空格
去掉首尾空格 void trim string s 去掉所有空格 void trim string s int index 0 if s.empty 去除多餘空格 思路就是定義兩個指標next和tail,乙個在前面尋找非空格的字元,另外乙個在後面一步一步移動,把後面的字元全部轉移到前面來 然後為了去...