《剑指Offer——5:替换空格》代码
Posted 穿迷彩服的鲨鱼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《剑指Offer——5:替换空格》代码相关的知识,希望对你有一定的参考价值。
前言
//==================================================================
// 《剑指Offer——5:替换空格》代码
// 题目:请实现一个函数,把字符串中的每个空格替换成"%20"。例如输入“We are happy.”,
// 则输出“We%20are%20happy.”。
//==================================================================
一、示例
示例 1:
输入:s = “We are happy.”
输出:“We%20are%20happy.”
二、代码解析
1.新建.cpp文件
代码如下(示例):
//==================================================================
// 《剑指Offer——5:替换空格》代码
// 题目:请实现一个函数,把字符串中的每个空格替换成"%20"。例如输入“We are happy.”,
// 则输出“We%20are%20happy.”。
//==================================================================
#include <iostream>
using namespace std;
class Solution
{
public:
/*暴力解法*/
string replaceSpace(string s)
{
int len = s.length();
string temp = "";
for (int i = 0; i < len; i++)
{
if (s[i] == ' ')
{
temp += "%20";
}
else
{
temp += s[i];
}
}
return temp;
}
};
/*双指针法*/
/*length为字符数组str的总容量,大于或等于字符串str的实际长度*/
void ReplaceBlank(char str[], int length)
{
if (str == nullptr && length <= 0)
{
return;
}
/*originalLength 为字符串str的实际长度*/
int originalLength = 0;
int numberOfBlank = 0;
int i = 0;
while (str[i] != '\\0')
{
++originalLength;
if (str[i] == ' ')
{
++numberOfBlank;
}
++i;
}
/*newLength 为把空格替换成%20之后的长度*/
int newLength = originalLength + numberOfBlank * 2;
if (newLength > length)
{
return;
}
int indexOfOriginal = originalLength; //P1
int indexOfNew = newLength; //P2
while (indexOfOriginal >= 0 && indexOfNew > indexOfOriginal)
{
if (str[indexOfOriginal] == ' ')
{
str[indexOfNew--] = '0';
str[indexOfNew--] = '2';
str[indexOfNew--] = '%';
}
else
{
str[indexOfNew--] = str[indexOfOriginal];
}
--indexOfOriginal;
}
/*测试代码*/
for (int i = 0; i < newLength; i++)
{
cout << str[i];
}
}
int main()
{
char a[] = "aa kanms okaok mnaok maomn lkam km";
ReplaceBlank(a, 100);
cout << endl;
return 0;
}
2.测试
以上是关于《剑指Offer——5:替换空格》代码的主要内容,如果未能解决你的问题,请参考以下文章