首页 > ACM题库 > 九度OJ > 九度-1510-替换空格[解题代码]
2013
12-13

九度-1510-替换空格[解题代码]

题目描述:

请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

输入:

每个输入文件仅包含一组测试样例。
对于每组测试案例,输入一行代表要处理的字符串。

输出:

对应每个测试案例,出经过处理后的字符串。

样例输入:
We Are Happy
样例输出:
We%20Are%20Happy

cpp 代码如下:
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
char str[1000000];
char res[1000000];
int main()
{
	while (gets(str))
	{
		int off = 0;
		//int len = strlen(str);
		for (int i = 0; str[i]; i++)
		{
			if (str[i] == ' ')
			{
				res[off+i] = '%'; res[off+i+1] = '2'; res[off+i+2] = '0';
				off += 2;
			}else
				res[off+i] = str[i];
		}
		puts(res);
	}
	return 0;
}
/**************************************************************
	Problem: 1510
	User: coder
	Language: C++
	Result: Accepted
	Time:10 ms
	Memory:3472 kb
****************************************************************/

java 代码如下:

import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main{
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String line=null;
        while( (line=br.readLine()) != null){
            System.out.println(line.replaceAll(" ", "%20"));
        }
    }
}
/**************************************************************
	Problem: 1510
	User: coder
	Language: Java
	Result: Accepted
	Time:700 ms
	Memory:47188 kb
****************************************************************/


  1. 可以根据二叉排序树的定义进行严格的排序树创建和后序遍历操作。如果形成的排序树相同,其树的前、中、后序遍历是相同的,但在此处不能使用中序遍历,因为,中序遍历的结果就是排序的结果。经在九度测试,运行时间90ms,比楼主的要快。

  2. 第二个方法挺不错。NewHead代表新的头节点,通过递归找到最后一个节点之后,就把这个节点赋给NewHead,然后一直返回返回,中途这个值是没有变化的,一边返回一边把相应的指针方向颠倒,最后结束时返回新的头节点到主函数。

  3. 学算法中的数据结构学到一定程度会乐此不疲的,比如其中的2-3树,类似的红黑树,我甚至可以自己写个逻辑文件系统结构来。