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); +} ```