替換空格

一道很是簡單的小題,可是要注意的是時間問題。c中對於字符串的打印時間要低於對單個字符打印的時間。故在輸出時要注意。 java

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
	void replace(char*, char*);
	char* c = (char *) malloc(sizeof(char) * 1000001);
	char* result = (char *) malloc(sizeof(char) * 1000001);
	while (gets(c) != NULL) {

		replace(c, result);
		printf("%s\n", result);
		//Linux下系統有緩存,window中不用考慮緩存
		//刷新緩存
		fflush(stdout);
	}

	free(c);
	return EXIT_SUCCESS;
}

void replace(char* c, char* result) {

	while (*c != '\0') {
		if (*c != ' ') {
			*result++ = *c++;
		} else {
			*result++ = '%';
			*result++ = '2';
			*result++ = '0';
			c++;
		}
	}
}
下面這個方式會超時

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {

	char* c = (char *) malloc(sizeof(char) * 1000001);
	while (gets(c) != NULL) {

		int i = 0;
		int len = strlen(c);
		for (; i < len; i++) {
			char ch = *(c + i);
			if (ch != ' ') {
				printf("%c", ch);

			} else {
				printf("%%20");
			}

			//Linux下系統有緩存,window中不用考慮緩存
			//刷新緩存
			fflush(stdout);
		}
		printf("\n");
	}

	return EXIT_SUCCESS;
}
使用Java時要注意:Scanner 不能讀入一整行空格「 」;

import java.util.Scanner;

public class Main {

	/**
	 * 方法名稱:main()
	 * 方法描述:
	 * @param  
	 * @return String    
	 * @Exception 
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Scanner scanner = new Scanner(System.in).useDelimiter("\\.+");
		while(scanner.hasNext()){
			String str = scanner.nextLine();
			
			str = str.replaceAll(" ", "%20");
			System.out.println(str);
		}
	}
}
相關文章
相關標籤/搜索