剑指Offer 第五题 替换空格,c++完整代码

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yuanfang_hai/article/details/81779166

头文件replaceBlank构建一个类,类中包括替换空格的函数

class Solution{
public:
	void replaceSpace(char *str, int length) {
		if (str == nullptr || length <= 0)
			return;
		//统计字符串的长度和空格个数
		int originalLength = 0;
		int numberOfBlank = 0;
		for (int i = 0; str[i] != '\0'; i++)
		{
			originalLength++;
			if (str[i] == ' ')
				numberOfBlank++;
		}
		 //计算新的字符串长度
		int newLength = originalLength + numberOfBlank * 2;
		int indexNew = newLength;
		for (int indexOriginal = originalLength; indexOriginal >= 0 && indexNew > indexOriginal;
			indexOriginal--)
		{
			if (str[indexOriginal] == ' ')
			{
				str[indexNew--] = '0';
				str[indexNew--] = '2';
				str[indexNew--] = '%'; //注意索引要indexNew--
			}
			else
				str[indexNew--] = str[indexOriginal];
		}
	}
};

测试主函数如下

#include<iostream>
#include<string>
#include"replaceBlank.h"
using namespace std;

int main()
{
    string s;
    char* s_str = new char[100];
    //cin不接受空格,将按空格切成若干段
    getline(cin, s);
    s_str = const_cast<char*>(s.data());//将string类型转换成char*类型保存
    Solution cs;
    cs.replaceSpace(s_str, 100);
    cout << s_str;
    delete[] s_str;
    return 0;
}

运行结果

展开阅读全文

没有更多推荐了,返回首页