• 面试题4:替换空格


    题目:请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy.”,则输出“We%20are%20happy.”。
    方法一:利用c++的string类实现,可参见c++中string类的详解
    #include "stdafx.h"
    #include <string>
    #include <iostream>
    using namespace std;
    
    int main(int argc, _TCHAR* argv[])
    {
    	string str;
    	getline(cin,str);//输入字符串可包含空格,注意与cin>>str;的区别
    	while(str.find(" ")!=-1)//str.find()函数查找不到时返回-1,否则返回查找的位置
    	{
    		int pos=str.find(" ");
    		str.erase(pos,1);//删除空格
    		str.insert(pos,"%20");//插入字符串
    	}
    	cout<<str<<endl;
    	return 0;
    }
    方法二:设置两个指针,从后往前进行扫描替换
    #include "stdafx.h"
    #include <iostream>
    using namespace std;
    
    void ReplaceBlank(char string[],int length)
    {
    	if(string==NULL&&length<=0)
    		return;
    	int originalLength=0;
    	int numberOfBlank=0;
    	int i=0;
    	while(string[i]!='')
    	{
    		++originalLength;
    		if(string[i]==' ')
    			++numberOfBlank;
    		++i;
    	}
    	int newLength=originalLength+numberOfBlank*2;
    	if(newLength>length)
    		return;
    	int indexOfOriginal=originalLength;
    	int indexOfNew=newLength;
    
    	while(indexOfOriginal>=0&&indexOfNew>indexOfOriginal)
    	{
    		if(string[indexOfOriginal]==' ')
    		{
    			string[indexOfNew--]='0';
    			string[indexOfNew--]='2';
    			string[indexOfNew--]='%';
    		}
    		else
    		{
    			string[indexOfNew--]=string[indexOfOriginal];
    		}
    		--indexOfOriginal;
    	}
    }
    
    
    int main()
    {
    	const int length=100;
    	char string[length]="fgsk";
    	ReplaceBlank(string,length);
    	cout<<string<<endl;
    	return 0;
    }
  • 相关阅读:
    多表查询
    Java基础
    group by 和 having 用法
    多态
    修改用户权限
    集成测试过程
    系统测试
    软件验收测试通过准则
    性能测试、负载测试、压力测试的区别
    白盒测试
  • 原文地址:https://www.cnblogs.com/hdk1993/p/4356427.html
Copyright © 2020-2023  润新知