C++从零开始的打怪升级之路(day13)

这篇具有很好参考价值的文章主要介绍了C++从零开始的打怪升级之路(day13)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这是关于一个普通双非本科大一学生的C++的学习记录贴

在此前,我学了一点点C语言还有简单的数据结构,如果有小伙伴想和我一起学习的,可以私信我交流分享学习资料

那么开启正题

今天学了一些基础的string的函数,刷了一些题,等string学完了再总结语法,函数

1.把字符串转换成整数

把字符串转换成整数_牛客题霸_牛客网

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为 0 或者字符串不是一个合法的数值则返回 0

这题比较简单,注意字符-'0'转换成整形还有题给的特殊条件判断即可

class Solution {
public:
    int StrToInt(string str) 
    {
        int flag = 1;
        int i = 0;
        int sum = 0;

        if(str[0] == '-')
        {
            flag = -1;
        }

        for(i=0;i<str.size();i++)
        {
            if((str[i] == '+' || str[i] == '-') && i == 0)
            {
                i++;
            }

            if(str[i] >= '0' && str[i] <= '9')
            {
                sum = sum * 10 + (str[i] - '0');
            }
            else
            {
                return 0;
            }
        }    

        return flag * sum;
    }
};

 这是ac代码

2.仅仅反转字母

917. 仅仅反转字母

  • 所有非英文字母保留在原有位置。
  • 所有英文字母(小写或大写)位置反转。

返回反转后的 s 

这个题目和快速排序的单趟排序很像,左边找到一个字母,右边找到一个字母,交换即可

class Solution {
public:
    bool letter(char ch)
    {
        if((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
            return true;
        else
            return false;
    }

    string reverseOnlyLetters(string s) 
    {
        int left = 0;
        int right = s.size() - 1;

        while(left < right)
        {
            while(!letter(s[left]) && left < right)
            {
                ++left;
            }

            while(!letter(s[right]) && left < right)
            {
                --right;
            }

            swap(s[left],s[right]);
            left++;
            right--;
        }

        return s;
    }
};

 这是ac代码

3.字符串中的第一个唯一字符

387. 字符串中的第一个唯一字符

给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1 

这题用到了计数的思想,创建一个数组,遍历字符串,在映射的数组内存内++,再遍历数组就可以找到我们要求的结果,这样时间复杂度为O(N)

class Solution {
public:
    int firstUniqChar(string s) 
    {
        int a[26] = {0};
        int i=0;
        for(i=0;i<s.size();i++)
        {
            a[s[i]-'a']++;
        }
        for(i=0;i<s.size();i++)
        {
            if(a[s[i] - 'a'] == 1)
            {
                return i;
            }
        }
        
        return -1;
    }
};

这是ac代码

4.字符串最后一个单词的长度

字符串最后一个单词的长度_牛客题霸_牛客网

计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)

首先我们要知道,cin读取时,遇到空格或者回车结束,而题目明显要读取带有含空格的字符串,显然我们不能用cin,于是我们使用getline这个函数来配合string读取带空格的字符串,其次,这个题目的思路和上面差不多,也是计数思想

 

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

int main() 
{
    string s;
    while(getline(cin,s))
    {
        int ret = 0;
        int i = 0;
        int count = 0;
        for(i=0;i<s.size();i++)
        {
            if(s[i] == ' ')
            {
                count++;
            }
        }

        for(i=0;i<s.size();i++)
        {
            if(count == 0)
            {
                ret = i;
                break;
            }
            if(s[i] == ' ')
            {
                count--;
            }
        }
        
        cout << (s.size() - ret) << endl;
    }
}

这是ac代码

5.验证回文串

125. 验证回文串

如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 

字母和数字都属于字母数字字符

给你一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false 

 首先我们创建一个新string,遍历原字符串,将我们想要的数据拷过去,然后进行验证

class Solution {
public:
    bool isPalindrome(string s) 
    {
        string str;
        int i=0;
        for(i=0;i<s.size();i++)
        {
            if((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= '0' && s[i] <= '9'))
            {
                str.push_back(s[i]);
            }else if((s[i] >= 'A' && s[i] <= 'Z'))
            {
                str.push_back(s[i] - 'A' + 'a');
            }
        }

        int left = 0;
        int right = str.size() - 1;
        while(left < right)
        {
            if(str[left] != str[right])
            {
                return false;
            }
            left++;
            right--;
        }

        return true;
    }
};

这是ac代码

总结:string作为STL的一员使用起来很便捷,明天将会探知他的实现原理,联系更难得题目

今天的博客就到这里了,后续内容明天分享,最近因为考试周原因不能更新太多内容,等考试周结束了再"快马加鞭"

新手第一次写博客,有不对的位置希望大佬们能够指出,也谢谢大家能看到这里,让我们一起学习进步吧!!!文章来源地址https://www.toymoban.com/news/detail-807715.html

到了这里,关于C++从零开始的打怪升级之路(day13)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android 开发--利用android studio 制作简单文字打怪升级游戏(伪地牢类)1.开始

    本人目前是大三考研党,之前有学过一些杂七杂八的知识,但是没有办法利用这些知识制作一些真正有用的东西出来。后来自学了android开发,学会使用了android studio,终于决定利用android studio 开发一个游戏出来,也算是我一直以来的梦想吧。但是由于制作水平有限,很多部分只

    2024年02月02日
    浏览(32)
  • [Linux打怪升级之路]-管道

    前言 作者 : 小蜗牛向前冲 名言 : 我可以接受失败,但我不能接受放弃   如果觉的博主的文章还不错的话,还请 点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 本期学习目标:理解什么是管道,学会使用匿名管道和命名管道进行通信 在学

    2024年02月08日
    浏览(28)
  • [Linux打怪升级之路]-文件操作

    前言 作者: 小蜗牛向前冲 名言: 我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请 点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正。 目录 一、认识操纵系统下的文件 1、什么是文件 2、文件的类型 3、文件的共识

    2024年02月01日
    浏览(30)
  • [Linux打怪升级之路]-缓冲区

    前言 作者 : 小蜗牛向前冲 名言 : 我可以接受失败,但我不能接受放弃    如果觉的博主的文章还不错的话,还请 点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正  本期学习目标:认识什么是缓冲区,缓冲区在哪里,模拟实现一个简单的缓

    2024年02月07日
    浏览(35)
  • [Linux打怪升级之路]-system V共享内存

    前言 作者 : 小蜗牛向前冲 名言 : 我可以接受失败,但我不能接受放弃   如果觉的博主的文章还不错的话,还请 点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 本期学习目标:认识什么是 system V共享内存,认识共享内存的接口函数,学会

    2024年02月08日
    浏览(33)
  • [Linux打怪升级之路]-信号的保存和递达

    前言 作者 : 小蜗牛向前冲 名言 : 我可以接受失败,但我不能接受放弃    如果觉的博主的文章还不错的话,还请 点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、信号的保存  1、信号其他相关常见概念 2、信号在内核中的表示 3、

    2024年02月05日
    浏览(29)
  • 【从零开始的rust web开发之路 一】axum学习使用

    第一章 axum学习使用 本职java开发,兼架构设计。空闲时间学习了rust,目前还不熟练掌握。想着用urst开发个web服务,正好熟悉一下rust语言开发。 目前rust 语言web开发相关的框架已经有很多,但还是和java,go语言比不了。 这个系列想完整走一遍web开发,后续有时间就出orm,还

    2024年02月12日
    浏览(39)
  • Jeecg-Boot 低代码开发平台之路(一) —— 开始从零学起

    今天开始详细学习下 Jeecg-Boot 低代码开发平台,官方网站对该平台的介绍是如下。 JeecgBoot是一款基于BPM的低代码平台!前后端分离架构 SpringBoot 2.x,SpringCloud,Ant DesignVue,Mybatis-plus,Shiro,JWT,支持微服务。强大的代码生成器让前后端代码一键生成,实现低代码开发! Jee

    2023年04月08日
    浏览(32)
  • 【从零开始的rust web开发之路 二】axum中间件和共享状态使用

    第一章 axum学习使用 第二章 axum中间件使用 上篇文件讲了路由和参数相应相关的。axum还有个关键的地方是中间件的使用,这篇文件就来说说。 这个概念跟gin框架的中间件概念一样,类似于springboot项目当中的请求过滤器,在请求过来的时候链式执行一些操作。例如鉴权,日志

    2024年02月11日
    浏览(36)
  • 【C++打怪之路Lv1】-- C++开篇(入门)

    🌈 个人主页: 白子寰 🔥 分类专栏: C++打怪之路,python从入门到精通,魔法指针,进阶C++,C语言,C语言题集,C语言实现游戏 👈 希望得到您的订阅和支持~ 💡 坚持创作博文(平均质量分82+),分享更多关于深度学习、C/C++,python领域的优质内容!(希望得到您的关注~) 目

    2024年04月23日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包