替换空格
来源:互联网 发布:小米手机怎么数据迁移 编辑:程序博客网 时间:2024/06/05 08:58
题目描述
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
思路分析:
可以想到两种解决方案
第一种创建新的字符串,在新的字符串中进行替换
第二种就是在原来的字符串上做替换,并且保证输入的字符串后面有足够多的多余空间
这里我用的是第二种在原来字符串上进行替换,替换的顺序有两种,从前向后替换和从后向前替换,从前向后替换时间复杂度为
具体实现及相关过程:
#include<stdio.h>#include<stdlib.h>#include<string.h>void replaceBlank(char *s, int length);void replaceBlank(char *s, int length) { int originLength = 0, newLength = 0, numberOfBlank = 0, i = 0, originIndex = 0, newIndex = 0; //得到实际字符串的长度和空格的个数 while(s[i] != '\0') { originLength++; if(s[i] == ' ') { numberOfBlank++; } i++; } //计算出新的字符串的长度(一个空格使得长度增加2) newLength = originLength + numberOfBlank * 2; //originIndex指向原来字符串的最后一个字符 originIndex = originLength; //newIndex指向新字符串的最后一个字符 newIndex = newLength; /* 当originIndex指向的是一个空格的时候,就需要用'%20'进行替换 (这个过程中newIndex需要移动三个位置),否则就要进行复制, 将originIndex所指向的字符复制到newIndex所指向的位置,然后 originIndex不断向前移动 */ while(originIndex >= 0 && newIndex > originIndex) { if(s[originIndex] == ' ') { s[newIndex--] = '0'; s[newIndex--] = '2'; s[newIndex--] = '%'; } else { s[newIndex--] = s[originIndex]; } originIndex--; } }void main(void) { char s[100]; gets(s); replaceBlank(s, 100); puts(s);}
创建新的字符串的解法:
package com.offer.exec;import java.util.Scanner;public class ReplaceBlank { public String replace(StringBuffer s) { if(s == null) { return null; } StringBuffer str = new StringBuffer(); for(int i = 0; i < s.length(); i++) { if(s.charAt(i) == ' ') { str.append('%'); str.append('2'); str.append('0'); }else { str.append(s.charAt(i)); } } return str.toString(); } public static void main(String args[]) { ReplaceBlank rb = new ReplaceBlank(); StringBuffer sb = new StringBuffer(); Scanner in = new Scanner(System.in); sb.append(in.nextLine()); System.out.println(rb.replace(sb)); }}
阅读全文
0 0
- 空格替换
- 替换空格
- 空格替换
- 替换空格
- 替换空格
- 替换空格
- 替换空格
- 替换空格
- 替换空格
- 替换空格
- 替换空格
- 空格替换
- 替换空格
- 替换空格
- 替换空格
- 替换空格
- 替换空格
- 替换空格
- 【通信方式六】socket编程之UDP通信
- beego搭建
- NOIP复习计划
- PHP 自定义错误日志
- js中 #代表id, .代表class
- 替换空格
- Spring Data JPA Using @Query
- C++ 进阶
- POJ 3175 Finding Bovine Roots 笔记
- 用Python将json数据装载到mysql
- 二、Starting and Stopping Systems in SAP HANA Studio
- HDU2528-Area(计算凸多边形面积,线段和直线交点)
- 链表面试题
- python爬虫(7)——获取京东商品评论信息