代码随想录算法训练营第八天

344. 反转字符串

  1. 方法:
    方法一: 直接用reverse函数

  2. 注意:

  3. 代码:

class Solution {
public:
    void reverseString(vector<char>& s) {
       return  reverse(s.begin(), s.end());
    }
};
  1. 运行结果:
    在这里插入图片描述

  2. 方法:
    方法二: 双指针 思路:

     1.定义两个指针,left=0  ,right = s.size()-1;
     2.交换两个指针对应的字符;
     3.左指针++,右指针--, 直到左指针< 右指针终止循环。
    
  3. 注意:

  4. 代码:

class Solution {
public:
    void reverseString(vector<char>& s) {
        int left=0;
        int  right = s.size()-1;
        while(left<right){
            swap(s[left], s[right]);
            left++;
            right--;
        }
    }
};
  1. 运行结果
    在这里插入图片描述

541. 反转字符串II

  1. 方法:

     利用for循环,按题意来。
    
  2. 注意:

  3. 代码:

class Solution {
public:
    string reverseStr(string s, int k) {
        int size = s.size();
        for(int i=0; i<s.size(); i+=(2*k)){
            if(i+k<size){
                reverse(s.begin()+i, s.begin()+i+k);
            }else {
                reverse(s.begin()+i, s.end());
            }
        }
        return s;
    }
};
  1. 运行结果
    在这里插入图片描述

卡码网:54.替换数字

  1. 方法:
    方法一:

     1. 开辟一个新的字符串res ;
     2. 遍历字符串s,  若遇到数字,则res+="number",若遇到字符,则res+=i;
    
  2. 注意:

  3. 代码:

#include <iostream>
#include <string> 
using namespace std;

int main(){
        std::string s;
        cin>>s;
        std:: string res;
        for(char i: s){
            if(i>='0' && i<='9'){
                res += "number";
            }else{
                res+=i;
            }
        
        }
        cout<< res;
    
}
  1. 运行结果
    在这里插入图片描述

  2. 方法:
    方法二: 双指针 ,不用重新开辟新字符串,输出原始的字符串s:

     指针i  指向新长度的末尾
     指针j  指向旧长度的末尾
     如果s[j]是数字,则
     		s[i] = 'r';
             s[i - 1] = 'e';
             s[i - 2] = 'b';
             s[i - 3] = 'm';
             s[i - 4] = 'u';
             s[i - 5] = 'n';
             i -= 5;    
       如果s[i]是字母  则s[i] = s[j]
    
  3. 注意: 利用cout输出

  4. 代码:

#include<iostream>
using namespace std;

int main(){
    string s;
    while(cin>>s){
        int count = 0;
        int oldsize = s.size();
        for(int i = 0; i < s.size(); i++){
            if(s[i]>='0'&& s[i]<='9'){
                count++;
            }
        }
        // cout<<count<<endl;
        

        s.resize(s.size()+ count* 5);
        
        int newsize = s.size();
        for(int i=newsize-1, j = oldsize-1;  i>j ;   j--, i--){
            if(s[j]>='0'&& s[j]<='9'){
                s[i] = 'r';
                s[i - 1] = 'e';
                s[i - 2] = 'b';
                s[i - 3] = 'm';
                s[i - 4] = 'u';
                s[i - 5] = 'n';
                i -= 5;                  
                     
            }else{
                s[i] = s[j]; 
            }
        }
        
        std::cout << s << std::endl;
    }
}
  1. 运行结果
    在这里插入图片描述

151.翻转字符串里的单词

  1. 方法:
    方法一: 分段式想法:

     1. 先去掉s中多余的空格(前面的空格、中间的空格、后面的空格)
     2. 写一个翻转函数, 翻转局部小单词
     3. 整个字符串翻转,输出字符串。
    
  2. 注意:

  3. 代码:

class Solution {
public:
    void remove_extra_space(string& s){
        for(int i = s.size() - 1; i > 0; i--){
            if(s[i] == s[i-1] && s[i] == ' '){
                s.erase(s.begin()+i);
            }
        }
        if(s[0] == ' '&& s.size()>0){
            s.erase(s.begin());
        }
        if(s[s.size()-1]== ' ' && s.size()>0){
            s.erase(s.begin()+s.size()-1);
        }
    }
    void reverse(string &s, int start, int end){
        for(int i=start, j=end; i<j; i++, j--){
            swap(s[i], s[j]);
        }
    }

    string reverseWords(string s) {
        remove_extra_space(s);
        cout<<s<<endl;
        reverse(s, 0, s.size()-1);
        cout<<s<<endl;
        int start = 0;
        for(int i =0; i<=s.size(); i++){
            if( s[i] == ' ' || i==s.size()){
               reverse(s, start, i-1);
               start = i+1;
               
            }

        }
        return s;
    }
};
  1. 运行结果
    在这里插入图片描述

卡码网:55.右旋转字符串

  1. 方法:
    方法一: 暴力法 思路:

  2. 注意:

  3. 代码:

  4. 运行结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/427615.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

学习408之数据结构--线性表-顺序表 学会动态顺序表的创建

线性表 线性表(inear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串等 线性表在逻辑上是线性结构&#xff0c;也就说是连续的一条直线。但是在物理结构上并不一定…

视频生成模型Sora的全面解析:从AI绘画、ViT到ViViT、DiT、VDT、NaViT、VideoPoet

视频生成模型Sora的全面解析&#xff1a;从AI绘画、ViT到ViViT、DiT、VDT、NaViT、VideoPoet 真没想到&#xff0c;举例视频生成上一轮的集中爆发才过去三个月&#xff0c;没想OpenAI一出手&#xff0c;该领域又直接变天了自打2.16日OpenAI发布sora以来&#xff0c;不但把同时…

论文阅读_代码生成模型_CodeGeeX

英文名称: CodeGeeX: A Pre-Trained Model for Code Generation with Multilingual Evaluations on HumanEval-X 中文名称: CodeGeeX&#xff1a;一种用于代码生成的预训练模型&#xff0c;并在HumanEval-X上进行多语言评估 链接: https://arxiv.org/abs/2303.17568 代码: http…

政务浏览器——打通信创闭环最后一公里

当前&#xff0c;信创建设工作主要集中在芯片、操作系统、数据库以及pc整机&#xff0c;这些领域基本可用&#xff0c;或者达到了市场主流水平。但是&#xff0c;政务办事场景下的信创落地仍然困难重重&#xff0c;很多地方不得不装双系统或买两台设备来来平衡日常业务和信创考…

CentOS部署FastDFS+Nginx并实现远程访问本地服务器中文件

文章目录 前言1. 本地搭建FastDFS文件系统1.1 环境安装1.2 安装libfastcommon1.3 安装FastDFS1.4 配置Tracker1.5 配置Storage1.6 测试上传下载1.7 与Nginx整合1.8 安装Nginx1.9 配置Nginx 2. 局域网测试访问FastDFS3. 安装cpolar内网穿透4. 配置公网访问地址5. 固定公网地址5.…

盘点全网哪些超乎想象的高科技工具?有哪些免费开源的最新AI智能工具?短视频自媒体运营套装?

盘点全网哪些超乎想象的高科技工具&#xff1f;有哪些免费开源的最新AI智能工具&#xff1f;短视频自媒体运营套装&#xff1f; 自媒体主要用来干什么&#xff1f; 可以通过短视频吸引更多的观众和粉丝&#xff0c;提升自媒体账号的影响力和知名度。 短视频形式更加生动、直观…

MySQL-----视图

一 视图 ▶ 介绍 视图view是一个虚拟表&#xff0c;非真实存在&#xff0c;其本质是根据SQL语句获取动态的数据集&#xff0c;并为其命名&#xff0c;用户使用时只需使用视图名称即可获取结果集&#xff0c;并可以将其当作表来使用。 数据库中存放了视图的定义&…

windows环境下Grafana+loki+promtail入门级部署日志系统,收集Springboot(Slf4j+logback)项目日志

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; 往期热门专栏回顾 专栏…

HarmonyOS—开启AOT编译模式

AOT&#xff08;Ahead Of Time&#xff09;即提前编译&#xff0c;能够在Host端&#xff08;即运行DevEco Studio的电脑&#xff09;将字节码提前编译成Target端&#xff08;即运行应用的设备&#xff09;可运行的机器码&#xff0c;这样字节码可以获得充分编译优化&#xff0c…

OpenMMlab AI实战营第三期培训

OpenMMlab AI实战营第三期培训 OpenMMlab实战营第三次课2023.2.2学习参考一、pytorch完整训练过程二、基于mmclassification做图像分类1.安装mim工具包以及必备的库2. OpenMMlab项目中的重要概念&#xff08;1&#xff09;配置文件&#xff08;2&#xff09;下载配置文件 3.训练…

Frontend - Boostrap 消息弹窗

目录 一、下载 &#xff08;一&#xff09;中文官网 &#xff08;二&#xff09;bootstrap v3 依赖 jQuery 插件 二、解压并安装 &#xff08;一&#xff09;解压 1. 压缩包解压 2. 简化文件 &#xff08;二&#xff09;安装 三、配置 &#xff08;一&#xff09;bas…

CDN介绍

概念介绍 CDN Content Delivery Network&#xff0c;缩写&#xff1a;CDN&#xff09;是一种提供更快互联网访问的服务&#xff0c;通过在网络的边缘或核心交换区域部署内容代理服务器来实现。这些服务器利用全局负载调度机制来分发内容&#xff0c;从而构建了一个覆盖范围广…

2023年个税申报:“婴幼儿照护专项附加扣除标准”你选对了没有?

2023年个税申报&#xff1a;“婴幼儿照护专项附加扣除标准”你选对了没有&#xff1f; 根据《国务院关于设立3岁以下婴幼儿照护个人所得税专项附加扣除的通知》(国发〔2022〕8号)&#xff1a; 一、纳税人照护3岁以下婴幼儿子女的相关支出&#xff0c;按照每个婴幼儿每月1000元…

技术总结: PPT绘图

目录 写在前面参考文档技巧总结PPT中元素的连接立方体调整厚度调整图形中的文本3D 图片调整渐变中的颜色 写在前面 能绘制好一个好看的示意图非常重要, 在科研和工作中好的示意图能精准表达出自己的想法, 减少沟通的成本, 可视化的呈现也可以加强自身对系统的理解, 时间很久后…

Linux进程间通信方式之socket使用实例

TCP/IP协议族包括运输层、网络层、链路层&#xff0c;而socket所在位置如图&#xff0c;Socket是应用层与TCP/IP协议族通信的中间软件抽象层。 下面是网络socket通信的基本流程&#xff1a; socket函数 int socket(int domain, int type, int protocol);socket函数对应于普通…

DevOps学习 | 如何应对IT服务交付中的问题?

目录 前言 DevOps是什么&#xff1f; DevOps发展历程 DevOps与微服务、容器的关系 书本推荐 前言 作为一个热门的概念&#xff0c;DevOps这个名词在程序员社区里频频出现&#xff0c;备受技术大佬们的追捧。甚至网络上有了“南无DevOps”的戏言&#xff08;南无在梵语的意…

MySQL面试题【全面】

基础内容 1、MySQL的架构分层 &#xff08;1&#xff09;Serve层&#xff1a;负责建立连接、分析和执行 SQL。 MySQL 大多数的核心功能模块都在这实现&#xff0c;主要包括连接器&#xff0c;查询缓存、解析器、预处理器、优化器、执行器等。另外&#xff0c;所有的内置函数&…

解析 openGauss 的 AutoVacuum 机制及优化策略

前言 在 openGauss 数据库中&#xff0c;AutoVacuum 机制是一个关键的自动化功能&#xff0c;用于管理表的空间和性能。AutoVacuum 通过定期清理过时数据和更新统计信息&#xff0c;帮助数据库管理员维护数据库的性能和稳定性。 为什么需要 AutoVacuum&#xff1f; 了解AutoV…

SOCKS55代理 VS Http代理,如何选择?

在使用IPFoxy全球代理时&#xff0c;选择 SOCKS55代理还是HTTP代理&#xff1f;IPFoxy代理可以SOCKS55、Http协议自主切换&#xff0c;但要怎么选择&#xff1f;为解决这个问题&#xff0c;得充分了解两种代理的工作原理和配置情况。 在这篇文章中&#xff0c;我们会简要介绍 …

第15届蓝桥STEMA测评真题剖析-2024年1月28日Scratch编程初中级组

[导读]&#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成&#xff0c;后续会不定期解读蓝桥杯真题&#xff0c;这是Scratch蓝桥杯真题解析第173讲。 第15届蓝桥第4次STEMA测评&#xff0c;这是2024年1月28日举办的STEMA&#xff0c;比赛仍然采取线上形式。这…
最新文章