5. 剑指 Offer 05. 替换空格
要求
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
解题
C++版本
#include <iostream>
using namespace std;
class Solution
{
public:
string replaceSpace(string s)
{
int len = s.size();
int count = 0;
//统计空格数量
for (int i = 0; i < len; i++)
if (s[i] == ' ')
count++;
s.resize(len + count * 2);//修改s长度
int j = s.size()-1;
for (int i = len -1; i < j; i--,j--)
{
if (s[i] != ' ')
{
s[j] = s[i];
}
else
{
s[j - 2] = '%';
s[j - 1] = '2';
s[j] = '0';
j -= 2;
}
}
return s;
}
};
void test01()
{
string s1 = "We are happy.";
Solution s;
string s2 = s.replaceSpace(s1);
for (int i = 0; i < s1.size(); i++)
{
cout << s1[i];
}
cout << endl;
for (int i = 0; i < s2.size(); i++)
{
cout << s2[i];
}
cout << endl;
}
int main()
{
test01();
system("pause");
return 0;
}
Python版本
class Solution:
def replaceSpace(self, s: str) -> str:
res = ""
for c in s:
if c == ' ':
res += "%20"
else:
res += c
return res
def test01():
solution = Solution()
s1 = "We are happy."
print(s1)
s2 = solution.replaceSpace(s1)
print(s2)
if __name__=="__main__":
test01()
Java版本
package com.hailei_01;
public class replaceSpace {
public static void main(String[] args) {
String s1 = "We are happy.";
System.out.println(s1);
String s2 = replaceSpace01(s1);
System.out.println(s2);
String s3 = replaceSpace02(s1);
System.out.println(s3);
}
public static String replaceSpace01(String s) {
s = s.replace(" ","%20");
return s;
}
public static String replaceSpace02(String s) {
StringBuilder res = new StringBuilder();
for(Character c : s.toCharArray())
{
if(c == ' ')
res.append("%20");
else
res.append(c);
}
return res.toString();
}
}
希望本文对大家有帮助,上文若有不妥之处,欢迎指正
分享决定高度,学习拉开差距