zoukankan      html  css  js  c++  java
  • 面试题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;
    }
  • 相关阅读:
    逆波兰计算器
    单链表 头指针与头结点
    Python中sorted()方法的用法
    python 元组
    Python的lambda匿名函数
    sublime text 2
    python语句讲解
    URAL 1081 Binary Lexicographic Sequence
    POJ 3623 Best Cow Line, Gold(字符串处理)
    POJ 2142:The Balance_扩展欧几里得(多组解)
  • 原文地址:https://www.cnblogs.com/hdk1993/p/4356427.html
Copyright © 2011-2022 走看看