From 99dc8525256fb6f561ce7e47fc711bdac0e87363 Mon Sep 17 00:00:00 2001 From: changlua Date: Thu, 21 Oct 2021 23:54:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BA=86=E5=89=91=E6=8C=87Of?= =?UTF-8?q?fer05.=E6=9B=BF=E6=8D=A2=E7=A9=BA=E6=A0=BC=E7=9A=84java?= =?UTF-8?q?=E5=8F=8C=E6=8C=87=E9=92=88=E8=A7=A3=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problems/剑指Offer05.替换空格.md | 35 ++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/problems/剑指Offer05.替换空格.md b/problems/剑指Offer05.替换空格.md index 232d1a0a..22789450 100644 --- a/problems/剑指Offer05.替换空格.md +++ b/problems/剑指Offer05.替换空格.md @@ -144,6 +144,41 @@ public static String replaceSpace(StringBuffer str) { } return sb.toString(); } + +//方式二:双指针法 +public String replaceSpace(String s) { + if(s == null || s.length() == 0){ + return s; + } + //扩充空间,空格数量2倍 + StringBuilder str = new StringBuilder(); + for (int i = 0; i < s.length(); i++) { + if(s.charAt(i) == ' '){ + str.append(" "); + } + } + //若是没有空格直接返回 + if(str.length() == 0){ + return s; + } + //有空格情况 定义两个指针 + int left = s.length() - 1;//左指针:指向原始字符串最后一个位置 + s += str.toString(); + int right = s.length()-1;//右指针:指向扩展字符串的最后一个位置 + char[] chars = s.toCharArray(); + while(left>=0){ + if(chars[left] == ' '){ + chars[right--] = '0'; + chars[right--] = '2'; + chars[right] = '%'; + }else{ + chars[right] = chars[left]; + } + left--; + right--; + } + return new String(chars); +} ```