STL <string>--------String的OJ题目

1.题目截图(把字符串转换成整数----atoi)

1.1题目解析(在代码里)

class Solution {
public:
    int myAtoi(string str) {
        // 100%  97.45%   
        int len = str.size();
        if(len == 0)
            return 0;
        int i = 0, flag = 1, isSignal = 0, res = 0;
        while(i < len && str[i] == ' ')  //跳过空格
            i++;
        if(i >= len)  //如果全是空格
            return 0;
        while(i < len && str[i] == '-' || str[i] == '+'){  //取符号
            if(str[i] == '-')
                flag = -1;
            i++;
            isSignal++;
            if(isSignal > 1)  //不能超过一个符号
                return 0;
        }
        while(isdigit(str[i])){  //只要前面的那些数字
            if(res > INT_MAX / 10 || (res == INT_MAX / 10 && str[i] > '7'))  //用int来控制不溢出
                return flag == 1? INT_MAX : INT_MIN;
            res = res * 10  - '0' + str[i];
            i++;
        } 
        return flag * res;
    }
};

2.Leetcode415--字符串相加

class Solution {
public:
    string addStrings(string num1, string num2)
    {
        int end1 = num1.size() - 1;
        int end2 = num2.size() - 1;
        string str;
        int next = 0;     //用来进位
        while(end1 >= 0 || end2 >= 0)
        {
            int x1 = end1 >= 0 ? num1[end1--] - '0' : 0;
            int x2 = end2 >= 0 ? num2[end2--] - '0' : 0;
            int x = x1 + x2 + next;

            //处理一下进位
            next = x / 10;
            x = x % 10;

            //尾插
            str += ('0' + x);
        }
        if(next == 1)
        {
            str += '1';
        }
        reverse(str.begin() , str.end());
        return str;
    }
};

3.Leetcode----344.反转字符串

3.1用双指针解决问题

class Solution {
public:
    void reverseString(vector<char>& s)
     {
        int n = s.size();
        for(int left = 0,right = n - 1;left < right;left ++ , right--)
        {
            swap(s[left] , s[right]);
        }
    }
};

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

class Solution {
public:
    int firstUniqChar(string s)
     {
        //统计次数
        int count[26] = {0};
        for(auto ch : s)
        {
            count[ch-'a']++;
        }
        for(size_t i = 0;i < s.size();++i)
        {
            if(count[s[i] - 'a' ]== 1)
            {
                return i;
            }
        }
        return -1;
    }
};

5.Leetcode----125 验证回文串

class Solution {
public:
    bool isLetterOrNumber(char ch)
    {
        return (ch>='0'&&ch <='9')
        || (ch >='a'&& ch <='z')
        || (ch>='A' && ch <= 'Z');
    }
    bool isPalindrome(string s) 
    {
        for(auto& ch : s)
        {
            if(ch >='A' && ch <= 'Z')
            {
                ch += 32;
            }
        }
        int begin = 0 , end = s.size()-1;
        while(begin < end)
        {
            while(begin < end && !isLetterOrNumber(s[begin]))
            ++begin;
            while(begin < end && !isLetterOrNumber(s[end]))
            --end;
            if(s[begin] != s[end])
            {
                return false;
            }
            else
            {
                ++begin;
                --end;
            }
        }
        return true;
    }
};

6.Leetcode---43.字符串相乘

class Solution 

{

public:



  void MulItem(string &tmp, string &num1, char a)

  {

    int i = 0, sign=0;

    int mul = 0;

    while(i < num1.size())

    {

      mul = (num1[i]-'0') * (a-'0') + sign;

      if(mul >= 10)

      {

        sign = mul / 10;

        mul %= 10;

      }

      else

        sign = 0;

      tmp.push_back(mul+'0');

      i++;

    }    

    if(sign > 0)

      tmp.push_back(sign+'0'); 

  }   

  //对应为相加,sign进位采用引用传递

  int AddItem(int a, int b, int &sign)

  {

    int add = a+b+sign;

    if(add >= 10)

    {

      sign = 1;

      add -= 10;

    }

    else

      sign = 0;

    return add;

  }

  //错位相加

  void MoveAdd(string &result, string &tmp, int k)

  {

    int i, j;

    i = k;

    j = 0;

    int sign = 0;

    while(i<result.size() &&j<tmp.size())

    {

      result[i] = AddItem(result[i]-'0', tmp[j]-'0', sign) + '0';

      i++;

      j++;

    }

    while(i<result.size() && sign)

    {

      result[i] = AddItem(result[i]-'0', 0, sign)+'0';

      i++;

    }

    while(j < tmp.size())

    {

      int v = AddItem(0, tmp[j]-'0', sign);

      result.push_back(v+'0');

      j++;

    }

    if(sign)

      result.push_back(sign+'0');

  }



  string multiply(string num1, string num2) 

  {

  	 //先翻转数据,方便进位处理

     reverse(num1.begin(), num1.end());

     reverse(num2.begin(), num2.end());



     string tmp, result;

     for(int i=0; i<num2.size(); ++i)

     {

     	 //使用num2的每一个数据乘以num1

       MulItem(tmp, num1, num2[i]);

       //将乘得的结果进行错位相加

       MoveAdd(result, tmp, i);

       tmp.clear();

     }    



     while(result.size()!=1 && result.back()=='0')

      result.pop_back();



		 //翻转数据,恢复数据

     reverse(result.begin(), result.end());

     return result;

  }

};

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

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

相关文章

香港人才引进落户条件有哪些?香港优才计划详细介绍!

香港人才引进落户条件有哪些&#xff1f;港府优才计划详细介绍&#xff01; 拿到香港身份&#xff0c;不管是在内地还是在香港亦或是在海外&#xff0c;优势福利都特别多&#xff0c;成为了广大中产的追求。因为香港身份对于子女升学、住房、税收、养老等方面都有很大优势&…

【2024】最新微信小程序商城源码开源版 多用户无限多开+15大功能模块

随着微信小程序市场的蓬勃发展&#xff0c;越来越多的商家和企业意识到了微信小程序作为线上销售平台的重要性。为了满足广大用户的需求&#xff0c;分享一款2024年最新微信小程序商城源码开源版&#xff0c;该版本不仅支持多用户无限多开&#xff0c;还集成了15大功能模块&…

开发调试,远程访问内容、AI项目远程访问,需要的福利

下载地址 Windows 64位 (切勿直接在压缩文件中操作,全部解压到一处后再操作,请关闭某60(会胡乱拦截),可用其他任意安全软件)Mac OS X 64位 (给fastnat执行权限 chmod x ./fastnat_darwin_amd64 终端运行二进制,自行百度,当然建议使用docker方式安装)Linux 64位 (给fastnat执行…

5W 3KVAC隔离 宽电压输入 AC/DC 电源模块——TP05AL系列

TP05AL系列产品是一款经济型开板式开关电源&#xff0c;输出功率为5W&#xff0c;具有可靠性高、小体积、性价比高等特点&#xff0c;广泛用于工控和电力仪器、仪表、智能家居等相关行业。

微服务(Spring Clould)--Nacos的安装、配置

简介&#xff1a;&#xff08;取自官网&#xff09; Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称&#xff0c;一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了…

【CTF Web】NSSCTF 3863 [LitCTF 2023]导弹迷踪 Writeup(JS分析+源码泄漏+信息收集)

[LitCTF 2023]导弹迷踪 你是一颗导弹&#xff0c;你需要&#xff0c;飞到最后&#xff01;&#xff08;通过6道关卡就能拿到flag哦~ Flag形式 NSSCTF{} 出题人 探姬 解法 查看网页源代码。 flag 应该在这些文件里面。 <!-- Game files --><script type"applicat…

Process Monitor下载安装使用教程(图文教程)超详细

「作者简介」&#xff1a;2022年北京冬奥会网络安全中国代表队&#xff0c;CSDN Top100&#xff0c;就职奇安信多年&#xff0c;以实战工作为基础对安全知识体系进行总结与归纳&#xff0c;著作适用于快速入门的 《网络安全自学教程》&#xff0c;内容涵盖系统安全、信息收集等…

6大部分,20 个机器学习算法全面汇总!!建议收藏!(下篇)

上篇地址&#xff1a;6大部分&#xff0c;20 个机器学习算法全面汇总&#xff01;&#xff01;建议收藏&#xff01;&#xff08;上篇&#xff09;-CSDN博客 上篇介绍了 接下来介绍新的内容 半监督学习算法 半监督学习算法结合了监督学习和无监督学习的元素&#xff0c;利用既…

[C++核心编程-08]----C++类和对象之运算符重载

&#x1f3a9; 欢迎来到技术探索的奇幻世界&#x1f468;‍&#x1f4bb; &#x1f4dc; 个人主页&#xff1a;一伦明悦-CSDN博客 ✍&#x1f3fb; 作者简介&#xff1a; C软件开发、Python机器学习爱好者 &#x1f5e3;️ 互动与支持&#xff1a;&#x1f4ac;评论 &…

AVDemo漏洞平台黑盒测试

信息收集 说明一下&#xff1a; 因为是本地的环境&#xff0c;端口这些就不扫描了&#xff0c; 还有这个是某个dalao写的平台&#xff0c;也就检测不到什么cms了&#xff0c; 信息收集&#xff0c;端口&#xff0c;cms这些是必做的&#xff0c; 首先&#xff0c;这里先简单的…

致命错误: 用户 “system“ Password 认证失败 (kbjdbc: autodetected server-_enco

问题在于用户权限不足&#xff0c;修改kingbase安装目录data目录下的的文件sys_hba.conf&#xff0c;修改IPV4部分本地验证方式为trust即可 修改后&#xff0c;打开资源管理器&#xff0c;通过服务找到人大金仓服务&#xff0c;重新启动即可

有趣的css - 文字隐身术效果

大家好&#xff0c;我是 Just&#xff0c;这里是「设计师工作日常」&#xff0c;今天分享的是利用动画属性来模拟文字隐身消失的效果。 《有趣的css》系列最新实例通过公众号「设计师工作日常」发布。 目录 整体效果核心代码html 代码css 部分代码 完整代码如下html 页面css 样…

ip显示地址和实际地址不一样:原因解析与应对策略

在数字化时代&#xff0c;IP地址作为我们在互联网上的身份标识&#xff0c;其重要性不言而喻。然而&#xff0c;有时我们会遇到ip显示地址和实际地址不一样的情况&#xff0c;这不仅可能影响到我们的网络体验&#xff0c;还可能引发一系列安全和隐私问题。那么&#xff0c;造成…

嵌入式学习72-复习(字符设备驱动框架)

编辑 drivers/char/Kconfig 为了在make menuconfig是能够显示出我们写的驱动程序 make menuconfig 编辑 drivers/char/Makefile 才是真正把编写好的源文件加入到编译中去 make modules cp drivers/char/first_driver.ko ~/nfs/rootfs/

26版SPSS操作教程(高级教程第二十三章)

目录 前言 粉丝及官方意见说明 第二十三章一些学习笔记 第二十三章一些操作方法 时间序列模型 时间序列的建立和平稳化 数据假设 具体操作 定义时间变量 时间序列的平稳化 绘制相应的时间序列图 序列图 自相关图&#xff08;autocorrelation chart&#xff09; 对…

03-行为型模式(共10种)

上一篇: 02-结构型设计模式(共7种) 1. Strategy(策略模式) 策略模式是一种行为型设计模式&#xff0c;它定义了一系列算法&#xff0c;将每个算法封装到独立的类中&#xff0c;并使它们可以互相替换。这样可以使算法的变化独立于使用算法的客户端。 在 C 中&#xff0c;策略模式…

LeetCode-1953. 你可以工作的最大周数【贪心 数组】

LeetCode-1953. 你可以工作的最大周数【贪心 数组】 题目描述&#xff1a;解题思路一&#xff1a;贪心&#xff0c;关键点是找到(工作最长时间的工作longest )与(剩余其他工作加起来的时间总和rest )的关系。解题思路二&#xff1a;证明解题思路三&#xff1a;简化 题目描述&am…

【c++算法篇】滑动窗口

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;算法笔记仓 目录 1.长度最小的子数组2.无重复字符的最长子串3.最大连续1的个数 III4.将 x 减到 0 的最小操作数5.水果成篮6.找到字符串中所有字母异位词7.串联所有单词的子串8.最小覆盖子串 滑动窗…

系统架构师考试(二)

敏捷方法 CMMI代表Capability Maturity Model Integration&#xff0c;是一种用于评估和改进组织软件工程和系统工程的模型。CMMI提供一个框架&#xff0c;帮助组织评估其软件和系统工程的成熟度&#xff0c;该模型基于过程成熟度模型&#xff08;CMM&#xff09;和集成项目管理…

Java 如何去规避一些没用的类型转换?

在Java编程中&#xff0c;类型转换&#xff08;Type Casting&#xff09;是将一个数据类型的值转换为另一个数据类型的过程。这在某些情况下是必要的&#xff0c;但滥用类型转换会导致代码变得复杂、难以维护&#xff0c;并且可能引发运行时错误。规避不必要的类型转换不仅能提…