双指针替换空格

10 篇文章 0 订阅
5 篇文章 0 订阅

替换空格

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例 1:

输入:s = “We are happy.”
输出:“We%20are%20happy.”

思路

计算空格数,将原数组的长度扩大到size+count*2,双指针从后往前遍历,一个指向原数组,一个指向替换空格后的数组,,当指针相遇则替换完成

string replaceSpace(string s){
	int count = 0;
	for(auto c : s){
		if(c == ' ') 
			++count;
	}
	int oldStrSize = s.size();
	int newStrSize = oldStrSize + count * 2;
	s.resize(newStrSize);
	int i == oldStrSize - 1;
	int j = newStrSize - 1;
	while(i != j){
		if(s[i--] == ' '){
			s[j] = '0';
			s[j - 1] = '2';
			s[j - 2] = '%';
			j -= 2;
		}
		--j;
	}
	return s;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: #include<iostream> using namespace std; int main(){ char arr[] = "Hello World!"; char *p = arr; while(*p != '\0'){ if(*p == ' '){ *p = '_'; } p++; } cout << arr << endl; // 输出:Hello_World! return 0; } ### 回答2: 要编写程序用下划线替换数组中的空格元素,使用指针访问数组,不能使用下标。我们可以按照以下步骤进行编写: 1. 首先,定义一个字符指针变量,指向数组的起始地址。假设数组名为arr。将指针变量p指向arr。 2. 使用循环,判断当前指向的字符是否为空格。若为空格,则将指针变量p指向的字符替换为下划线。 3. 使用指针运算,将指针变量p向后移动到下一个字符的地址。这可以通过将p加1来实现。 4. 重复步骤2和步骤3,直到遍历完整个数组。 5. 最后,输出替换完成的数组。 下面是一个示例代码的实现: ```c #include <stdio.h> void replaceSpace(char* arr) { char* p = arr; // 定义一个指针变量,指向数组的起始地址 while (*p != '\0') { // 遍历数组直到遇到字符串结束符 if (*p == ' ') { // 判断当前指向的字符是否为空格 *p = '_'; // 若为空格,则替换为下划线 } p++; // 将指针变量向后移动到下一个字符的地址 } } int main() { char arr[] = "Hello World!"; // 示例数组 replaceSpace(arr); // 调用函数替换空格 printf("%s\n", arr); // 输出替换完成的数组 return 0; } ``` 以上代码将输出"Hello_World!",其中空格已被下划线替换。这样,我们就成功地用指针访问数组,并且实现了空格替换的功能。 ### 回答3: 要编写程序,用下划线替换数组中的空格元素,使用指针访问数组,不能使用下标。 首先,我们需要定义一个待处理的数组,其中包含空格元素。然后,我们将创建一个指针变量,用于访问数组中的每个元素。接下来,我们使用循环来遍历整个数组,直到指针指向数组的末尾。 在每个迭代中,我们将检查当前指针所指向的元素是否为空格。如果是空格,则将其替换为下划线。为了实现这一点,我们可以使用条件语句来比较当前元素与空格的ASCII值(32)是否相等。如果相等,则将指针所指向的值修改为下划线的ASCII值(95)。 最后,我们继续向下移动指针,以便访问下一个元素。这可以通过将指针变量递增一个单位实现。 下面是一个示例程序: ```c++ #include <iostream> using namespace std; int main() { // 定义待处理的数组 char arr[] = "Hello world! This is a test."; // 创建指向数组的指针 char* ptr = arr; // 遍历数组并替换空格元素 while (*ptr != '\0') { if (*ptr == ' ') { *ptr = '_'; } ptr++; } // 输出替换后的数组 cout << arr << endl; return 0; } ``` 在这个示例程序中,我们首先定义了一个包含空格元素的字符数组。然后,我们创建了一个指针变量 `ptr`,并将其指向数组的起始位置。接下来,我们使用一个 `while` 循环来遍历数组中的每个元素,直到指针指向数组的结束标志 `'\0'`。在每个迭代中,我们检查指针指向元素的值是否为 `' '`,如果是,则将其替换为 `'_'`。最后,我们递增指针,继续向下遍历数组。最终,我们输出替换后的数组。 这样,我们就成功地编写了一个程序,用下划线替换数组中的空格元素,并使用指针来访问数组,而不使用下标。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值