劍指offer(4)替換空格

本算法方法來自於劍指offer,並牛客網編程通過

#include<iostream>
using namespace std;
class Solution {
public:
	void replaceSpace(char *str, int length)
	{
		if (str == NULL || length <= 0)
			 return;
		int originallength = 0;
		int numberofblank = 0;
		int i=0 ;
		while(str[i]!= '\0')
		{
			++originallength;
			if (str[i] == ' ')
				++numberofblank;
			++i;
		}//計算字符串長度,空格數量
		int newlength = originallength + 2 * numberofblank;//計算增加空格後的長度
		if (newlength > length)
			return;
		int indexoriginal = originallength;
		int indexnew = newlength;
		while (indexoriginal >= 0 && indexnew > indexoriginal)
		{
			if (str[indexoriginal] == ' ')
			{
				str[indexnew--] = '0';
				str[indexnew--] = '2';
				str[indexnew--] = '%';
			}//添加%20
			else
			{
				str[indexnew--] = str[indexoriginal];//原始字符向後移
			}
			--indexoriginal;
		}
		cout << str << endl;
	}
};
int _tmain()
{
	int length = 30;
	cout << "intput string: ";
	char str1[20];
	cin.get(str1, 20);//cin.get(字符數組名,接收字符數目)用來接收一行字符串,可以接收空格
	Solution S;
	S.replaceSpace(str1, length);
	system("pause");
	return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章