• 【C++】string类的使用,小试牛刀


    🧸🧸🧸各位大佬大家好,我是猪皮兄弟🧸🧸🧸
    在这里插入图片描述

    一、前提

    在这里插入图片描述

    为什么会出现string类?
    C语言中,字符串是以\0结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数始于字符串是分离开的,不太符合OOP面向对象的思想,而且底层空间需要用户自己管理,稍不留神还会越界访问,所以出现了string类

    二、对string类的应用、小试牛刀

    1.字符串的逆置

    leetcode反转字母
    在这里插入图片描述
    对于这道题,就是判断是不是字母以及停止的条件

    class Solution {
    public:
        string reverseOnlyLetters(string s) {
            if(s.size()==0||s.size()==1)
            return s;
            int left=0;
            int right= s.size()-1;
            while(left<right)
            {
                while(left<right&&!isalpha(s[left]))
                left++;
                while(left<right&&!isalpha(s[right]))
                right--;
                swap(s[left++],s[right--]);
            }
    
            return s;
    
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    2.字符串相加

    leetcode字符串相加
    在这里插入图片描述
    用一个字符串来存储每位的值,然后最后使用一个自带的逆置,reverse需要传的是迭代区间

    class Solution {
    public:
        string addStrings(string num1, string num2) {
            int rbegin1 = num1.size()-1;
            int rbegin2 = num2.size()-1;
            string target;
            int mod = 0;
            while(rbegin1>=0||rbegin2>=0||mod)
            {
                if(rbegin1>=0)
                {
                    mod+=(num1[rbegin1]-'0');
                    rbegin1--;
                }
                if(rbegin2>=0)
                {
                    mod+=(num2[rbegin2]-'0');
                    rbegin2--;
                }
                    
                int tmp=mod%10;
                target+=(tmp+'0');
                mod/=10;
            }
            reverse(target.begin(),target.end());
            return target;
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

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

    newcoder字符串最后一个单词的长度
    在这里插入图片描述
    使用cin< 1.scanf(“%[^某个符号位置]”);
    2.getline(istream&in , str)

    #include 
    #include 
    using namespace std;
    
    int main(){
          //getline
          //scanf("%[^某个字符]");
        string str;
        getline(cin,str);
        size_t posEnd;
        for(int i= str.size()-1;i>=0;i++)
        {
            if(isalpha(str[i]))
            {
                posEnd=i;
                break;
            }
        }
        size_t posBegin= str.rfind(' ',posEnd);
        cout<<posEnd-posBegin<<endl;
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

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

    leetcode字符串中第一个唯一字符

    在这里插入图片描述

    class Solution {
    public:
    	//下面这中方法时间复杂度O(N^2)
    	//最好的还是遍历一遍,用计数的方法
        int firstUniqChar(string s) {
            for(int i=0;i<s.size();i++)
            {
                int pos1 = s.find(s[i]);
                int pos2 = s.rfind(s[i]);
                if(pos1==pos2)
                return i;
            }
            return -1;
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    三、总结

    学到的知识需要应用起来才能知道自己掌握,多做题对于现在的我们而言是很有帮助的,感谢大家的支持,大家一起共同进步!

    在这里插入图片描述

  • 相关阅读:
    WiFi cfg80211
    2.11-CSS基础--伪类和伪元素
    JavaScript的使用
    二维码智慧门牌管理系统升级解决方案:实现服务状态实时监控
    DM8:达梦数据库dexp-DMP逻辑导出按用户模式定时自动备份数据库
    golang程序能不能用LD_PRELOAD进行hook?
    TMS FixInsight代码评估工具
    Pyhton学习笔记第一天(Python基本语句)
    ros2安装教程
    使用UiPath和AA构建的解决方案 1. 机器人过程自动化入门
  • 原文地址:https://blog.csdn.net/zhu_pi_xx/article/details/126678158