替换空格

本文介绍了一种在O(n)时间复杂度内实现字符串中空格替换的方法,并使用双指针技巧来完成这一任务。此外,还展示了如何利用栈来实现数组元素的逆序输出,通过具体的代码实例进行说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#思路:
时间复杂度为o(n),从字符串的后面往前找空格然后替换,需要两个指示器指向字符串原始末尾和新增空格后的末尾。

#include<stdio.h>
void RepalvceBlank(char string[],int length)
{
   if(string==NULL && length<=0)
       return;
   int oldoflength=0;
   int numberofblank=0;
   int i=0;
   while(string[i]!='\0')
   {
       ++oldoflength;    //计算原始字符串的长度
       if(string[i]==' ')
           ++numberofblank;  //计算空格的个数
       ++i;   
   }

   /*newlength为把空格替换为'%20'后的长度*/
   int newlength=oldoflength+numberofblank*2;
   if(newlength>length)
       return;

   int indexofold=oldoflength;
   int indexofnew=newlength;
   while(indexofold >=0 && indexofnew>indexofold)
   {
         if(string[indexofold]==' ')
         {
              string[indexofnew--]='0';
              string[indexofnew--]='2';
              string[indexofnew--]='%';
         }
         else
              string[indexofnew--]=string[indexofold];
         --indexofold;
   }
}

void main()
{
   char str[20]="we are happy!";
   RepalvceBlank(str,20);
   puts(str);
}  
  • 栈的简单应用(数字的逆转)
#include<iostream>
#include <stack> 
using namespace std;

void Reverse_List(int a[])
{
    std::stack<int> array;  //定义一个整形的栈
    int i=0;
    while(i!=5)
    {
        array.push(i);  //数组下标入栈
        i++;
    }
    while(!array.empty())
    {
       int j=array.top(); //获取当前栈中的位置
       printf("%d\n",a[j]);
       array.pop(); //数组下标出栈
    }
}

void main()
{
    int a[6]={2,3,4,5,6};
    Reverse_List(a);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值