当前位置: 首页 > news >正文

路径加密(替换空格),剑指offer,力扣

目录

我们直接看题解吧:

方法: 

审题目+事例+提示:

解题思路:

法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:
  1. 判断数组是否为空,是则返回null
  2. 循环统计一下空格数量
  3. 设置数组新长度,双指针,oldindex指向原数组末尾,newindex指向原数组+2*空数量
  4. 循环:

         ·若遇到空格,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()方法

相关文章:

  • 使用iperf3在macOS上进行网络性能测试
  • python flask_restful “message“: “Failed to decode JSON object: None“
  • Redis6的IO多线程分析
  • 嵌入式Linux系统中内存分配详解
  • Pytorch实战教程(五)-计算机视觉基础
  • python目标检测将视频按照帧率切除成图片
  • 数据的使用、表关系的创建、Django框架的请求生命周期流程图
  • 智能井盖传感器功能,万宾科技产品介绍
  • [POI2006] OKR-Periods of Words——最大周期长度(扩展最小周期长度)
  • OpenCV中更稳更快的边缘检测方法,快速查找线、圆、椭圆--EdgeDrawing-C++代码
  • 推导式
  • Linux---(五)三大工具yum、vim、gcc/g++
  • 有符号数是如何判断正负符号位的?
  • 基于element-plus定义表格行内编辑配置化
  • fpga时序相关概念与理解
  • Pydantic:数据类型确认和解析神器
  • 3.0.3版vsftpd所支持的FTP命令
  • 【Docker】iptables基本原理
  • 基于51单片机的万年历-脉搏计仿真及源程序
  • 【面经】ES中分片是什么?副本是什么?
  • 新城市志|GDP万亿城市,一季度如何挑大梁
  • 用贝多芬八首钢琴三重奏纪念风雨并肩20年
  • 跨越三十年友情,61岁余隆和60岁齐默尔曼在上海再度合作
  • 雷军内部演讲回应质疑:在不服输、打不倒方面,没人比我们更有耐心
  • 人民日报整版聚焦:外贸产品拓内销提速增量,多地加快推动内外贸一体化
  • 奥古斯都时代的历史学家李维