一.题目:替换空格 题目:请实现一个函数,把字符串中的每个空格替换成"%20".例如输入“We are happy.”,则输出“We%20are%20happy.”. 在网络编程中,如果URL参数中含有特殊字符,如空格.'#'等,可能导致服务器端无法获得正确的参数值.我们需要将这些特殊符号转换成服务器可以识别的字符.转换的规则是在'%'后面跟上ASCII码的两位十六进制的表示.比如空格的ASCII码是32,即十六进制的0x20,因此空格被替换成"%20".再比如'#…
面试题 5. 替换空格 题目:请实现一个函数,将一个字符串中的空格替换成"%20".例如,当字符串为We Are Happy. 则经过替换之后的字符串为We%20Are%20Happy. Java 实现 public class Solution { public String replaceSpace(StringBuffer str) { if(str==null||str.length()==0) return str==null?null:str.toString(); int…
利用STL: #include"iostream" #include"stdio.h" #include"algorithm" using namespace std; string ReplaceBlank(string src) { if(src.find(" ")>src.length()) return src; while(src.find(" ")<src.length()) { i…
题目:请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 分析:通常来说,这样的题有两种方式.空间换时间,时间换空间.但是这个有更好的算法.可以先计算空格的次数,然后计算最后的长度,有两个下标,分别表示原串最后的位置和结果串最后的位置,我们从后向前推,遇到空格就补充%20,同时结果串的下标依次前移,遇不到就将原串的当前下标的值给结果串下标的值,同时两者下标前移,直到原串下标移到开始位置 p…
思路: 例如把we are happy这个字符串中所有空格替换成"%20",最直接的做法是从头开始扫苗,遇到空格就替换,并且把空格后面的字符都顺序后移.复杂度O(n^2). 重要思想(这个从后往前的思想特别重要,举一反三的例子也是):先扫描一遍字符串统计出空格数量blanknum,由于每个空格被替换成3个字符"%20",即每替换一个空格总长度增加2,因此最后总的长度应该是原长+blanknum*2.然后对字符串从后往前扫描,不是空格的直接移动到新位置,如果是空格替换…
(给一个足够长的字符数组,其中有一段字符,将' '(空格)替换成'%' '2' '0'三个字符,原字符段由'\0'结尾) 书中方法:这道题如果从头到尾扫描数组并替换,会涉及到数组的移动.如果不移动元素,从头到尾处理似乎没有什么思路.看到题目给的足够长的数组,我们要联想到从后往前处理的方式.我们计算出替换后数组的长度,可以简单的推断出原字符段处理到第一个字符的时候,新字符段也处理到第一个字符. public void replace(char[] c){ if(c == null || c.len…
题目 请实现一个函数,把字符串 s 中的每个空格替换成"%20". 示例 1: 输入:s = "We are happy." 输出:"We%20are%20happy." 限制: 0 <= s 的长度 <= 10000 思路:双指针 暴力方法,从前向后遍历,遇到空格就替换,则每次替换需要移动空格后面O(n)个字符,所以总时间复杂度为O(n^2). 我们可以先计算出空格数,然后可得替换后新串总长度,设两个指针i和j分别指向原来字符串末尾…
题目描述 请实现一个函数,将一个字符串中的每个空格替换成"%20".例如,当字符串为We Are Happy. 则经过替换之后的字符串为We%20Are%20Happy. 编程思想 首先求出字符串空格的个数,然后新字符串的长度 = 旧字符串的长度 + 2 * 空格的个数,最后从后往前遍历复制即可. 编程实现 class Solution { public: //length为字符数组的总容量 void replaceSpace(char *str,int length) { if(st…
问题描述 请实现一个函数,把字符串 s 中的每个空格替换成"%20". 示例 1: 输入:s = "We are happy." 输出:"We%20are%20happy." 限制: 0 <= s 的长度 <= 10000 代码 class Solution { public: string replaceSpace(string s) { int n = s.size(); string ans; for(int i = 0; i…
题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l".如果当前字符流没有存在出现一次的字符,返回#字符. 思路 和前面的那道字符串中只出现一次的字符相似而不相同,前面那道是固定长度字符串,而本题是字符流,也就是会增长的,每次字符串多一个字符,就要重新判断是哪个只出现一次的…