首页 > 其他分享 >剑指offer——Day03字符串(简单)

剑指offer——Day03字符串(简单)

时间:2022-11-15 15:34:00浏览次数:47  
标签:string offer Day03 题解 代码 空格 int 字符串

Day3 2022.11.9 字符串(简单)

05.替换空格

自己实现

遍历字符串中查找空格位置,erase空格,insert"%20"

代码如下:

class Solution {
public:
    string replaceSpace(string s) {
        for(int i=0;i<s.size();i++)
        {
            if(s[i]==' ')
            {
                s.erase(i,1);
                s.insert(i,"%20");
            }
        }
        return s;
    }
};

代码表现

这个为啥时间消耗这么多...可能是调用STL方法的原因

题解

1个空格换成3个字符长度的"%20",因此新字符串的长度为原长度+2*空格数量,利用这个倒序地把字符串拉长

代码如下:

class Solution {
public:
    string replaceSpace(string s) {
        int length=s.size();
        int cnt=0;
        for(int i=0;i<length;i++)
        {
            if(s[i]==' ')cnt++;
        }
        s.resize(length+2*cnt);
        for(int i=length-1,j=s.size()-1;i<j;i--,j--)	//i<j比较体现核心,注意要倒序
        {
            if(s[i]!=' ')s[j]=s[i];
            else
            {
                s[j-2]='%';
                s[j-1]='2';
                s[j]='0';
                j-=2;
            }
        }
        return s;
    }
};

代码表现

好快...

hint:

  • 类数组的结构往里插入东西可以采用题解的这种倒序把原来的东西往后拉的方式

58.Ⅱ.左旋转字符串

自己实现

这个题很简单,就把前面n个长度的子串append到字符串后面,然后再erase首部n个字符即可

代码如下:

class Solution {
public:
    string reverseLeftWords(string s, int n) {
        s.append(s.substr(0,n));
        s.erase(0,n);
        return s;
    }
};

代码表现:

完美咯

题解:

这个题太简单了,就不看题解了

标签:string,offer,Day03,题解,代码,空格,int,字符串
From: https://www.cnblogs.com/cspzyy/p/16892552.html

相关文章

  • python笔记74- yaml 使用特殊符号| 解决字符串带换行的问题
    前言在yaml文件中通过字符串写一行,如果字符串需要换行的,可以使用yaml中的特殊符号|和>。管道符||这个控制符的作用是保留文本每一行尾部的换行符"\n",等效于|+。|+......
  • Javascript中字符串的instanceof String的结果
    如果是单纯的字符串赋给变量,虽然类型为string,但是instanceofString是false,并不是String对象,因为没有创建实例. 而这种new一个String实例则instanceof是属于String......
  • JAVA中的字符串加空格的实现方式
    一、问题描述我们现在输入了一个字符串,然后可能在一些情况下,我们需要将字符串中的每一个字符拿空格隔开,那么这种样式应该如何实现呢?二、实现思路我们直接将字符串变成数......
  • 【Java】生成随机字符串
    packagecom.runsky.utils;importjava.util.Random;publicclassGetRandom{privatestaticfinalString[]GENERATE_SOURCE=newString[]{"0","1","2",......
  • Oracle中的substr()函数,截取字符串
    实例、selectsubstr('HelloWorld',0,3)valuefromdual;//返回结果:Hel,截取从“H”开始3个字符、selectsubstr('HelloWorld',1,3)valuefromdual;//返回结果:Hel,截取......
  • Javascript的字符串不可变性
    JS的字符串不可变指的是字符串值是不变的,只是变量指向的地址变化了,重新在内存中开辟了空间.vara='111';vara='222';此时字符串'111'的空间依然存在内存中,重新开辟......
  • 新的学习历程-python6 字符串基础使用
    1sentence1='tom\'spetisacat'#单引号中包含转单引号2sentence2="tom\'spetisacat"3sentence3="tomsaid:\"helloworld\""4sentence4='to......
  • 从新开始学Python - 字符串扩展3
    字符串定义方法单引号双引号三个双引号,例如"""Python学习"""三个双引号与多行注释相同,也可以支持换行,如果不用变量接受,则为多行注释,如果用变量接受,则为字符串、......
  • 459. 重复的子字符串
    459.重复的子字符串给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。示例1:输入:s="abab"输出:true解释:可由子串"ab"重复两次构......
  • 20221114-python字符串
    1.字符串定义:    2.字符串的转义符    3.字符串的拼接:      4.字符串的下标:    5.字符串的切片 ......