码迷,mamicode.com
首页 > 其他好文 > 详细

面试题5:替换空格

时间:2019-10-20 21:40:05      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:空格替换   sys   存在   bsp   else   暴力   复杂度   空间   设置   

1.题目描述

请实现一个函数,把字符串中的每个空格替换成"%20"。例如输入“We are happy.”,则输出“We%20are%20happy.”

2.分析边界条件及测试用例

1.考虑特殊输入,空串、单空格、多空格,测试用例“”,“ ”,“  ”;

2.考虑输入字符串无空格,测试用例“string”;

3.考虑正例输入,字符串前、中、后存在空格(单多空格),测试用例“ hello  world ”。

3.分析求解

1.运用Java的String包的replace方法

1     str = str.replace(" ","%20");

2.暴力遍历求解

对整个字符串进行从左至右遍历,遇到空格进行替换(若为字符数组,需要向后移位,会使得复杂度为O(n^2))。

3.运用双指针的算法思想求解

双指针的算法思想:设置两个指示位(指针),指向字符串的末尾,移动一个指针至空格所在位置,此时两个指针之间的子串不存在空格,是最终字符串的组成部分,通过在此段字串之前添加字符串“%20”,对整个字符串进行此操作,所得结果即为要求字符串。

 1     public static String replaceSpace(String str) {
 2         int len = str.length();
 3         int p1 = len - 1;
 4         int p2 = len - 1;
 5         String re = "";
 6         while(p1 >= 0 && p2 >= 0) {
 7             if (str.charAt(p1) != ‘ ‘) {
 8                 p1--;
 9             } else {
10                 re = "%20" + str.substring(p1 + 1, p2 + 1) + re;
11                 System.out.println(re);
12                 p1--;
13                 p2 = p1;
14             }
15         }
16         if (p2 >= 0) {
17             re = str.substring(0, p2 + 1) + re;
18 
19         }
20         return re;
21     }

复杂度分析:时间复杂度O(n),空间复杂度O(1)。

面试题5:替换空格

标签:空格替换   sys   存在   bsp   else   暴力   复杂度   空间   设置   

原文地址:https://www.cnblogs.com/zxzhou/p/11710028.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!