路径加密(替换空格),剑指offer,力扣
- 开源代码
- 2025-08-13 09:03:02

目录
我们直接看题解吧:
方法:
审题目+事例+提示:
解题思路:
法1:
代码(法1):
法2:
代码(法2):
原题解:
【剑指Offer】2、替换空格
力扣题解:
LCR 122. 路径加密 - 力扣(LeetCode)
今天刷路径加密(替换空格),大家有兴趣可以点上看看题目要求,试着做一下。
我们直接看题解吧:由于力扣题目与原题有点差异,力扣传入的是String,而原题这边传的是StringBuffer,所以这边以原题为主
方法:第一个方法,创建新字符串
(剑指offer)第二个方法,原地更改
审题目+事例+提示:原题中时将空格“ ”改为%20,这意味着每次需要增加两位
解题思路: 法1:循环,遇到‘.’(空格)就加空格“ ”(%20),否则就其他加字符。
代码(法1):力扣:
class Solution: def pathEncryption(self, path: str) -> str: res = [] for c in path: if c == '.': res.append(' ') else: res.append(c) return "".join(res)原题:
public String replaceSpace(StringBuffer str) { String res=""; for(int i=0;i<str.length();i++){ char c=str.charAt(i); if(c==' ') res += "%20"; else res += c; } return res; }优化1(利用三目运算):
class Solution { public: string replaceSpace(string s) { string str; for(int i = 0;i<s.size();i++){ s[i]==' '?str+="%20":str+=s[i]; } return str; } };优化2(利用replace()方法):
class Solution { public String replaceSpace(String s) { return s.replaceAll(" ","%20"); } } 法2: 判断数组是否为空,是则返回null循环统计一下空格数量设置数组新长度,双指针,oldindex指向原数组末尾,newindex指向原数组+2*空数量循环:·若遇到空格,oldindex--,依次newindex--,填入%,2,0
·否则,将其他字符元素放入new指向的位置,之后old与new 递减
5.最后返回字符串
代码(法2): public String replaceSpace(StringBuffer str) { if(str==null) return null; int numOfblank = 0;//空格数量 int len=str.length(); for(int i=0;i<len;i++){ //计算空格数量 if(str.charAt(i)==' ') numOfblank++; } str.setLength(len+2*numOfblank); //设置长度 int oldIndex=len-1; //两个指针 int newIndex=(len+2*numOfblank)-1; while(oldIndex>=0 && newIndex>oldIndex){ char c=str.charAt(oldIndex); if(c==' '){ oldIndex--; str.setCharAt(newIndex--,'0'); str.setCharAt(newIndex--,'2'); str.setCharAt(newIndex--,'%'); }else{ str.setCharAt(newIndex,c); oldIndex--; newIndex--; } } return str.toString(); }注:使用 了setLength()、setCharAt()方法
路径加密(替换空格),剑指offer,力扣由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“路径加密(替换空格),剑指offer,力扣”