• string的部分题目


    目录

    字符串转整形数字

    翻转字符串中的单词


    字符串转整形数字

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

     思路:我们分为三种情况:当字符串中有字母时,我们直接返回0,当字符串有+或-时,我们进行判断,假如为+时,我们就返回+值,为-的话,就返回-值,当字符中有数字时,我们从高位到低位进行计算。

    1. class Solution {
    2. public:
    3. int StrToInt(string str) {
    4. int i=0,isplus=1;
    5. for(auto ch:str)
    6. {
    7. if(isalpha(ch))
    8. {
    9. return 0;
    10. }
    11. if(ch=='+'||ch=='-')
    12. {
    13. isplus=ch=='+'?1:-1;
    14. }
    15. if(isdigit(ch))
    16. {
    17. i=10*i+ch-'0';
    18. }
    19. }
    20. return isplus*i;
    21. }
    22. };

    我们对代码进行逐语句分析:

    我们首先创建一个变量i=0,isplus=1。这个变量0我们下面再分析,我们分析这个isplus

    我们知道,我们的数字分为三种,带符号的和不带符号的,不带符号的默认是正数,带符号的+表示正数,-表示负数。

    我们的isplus就相当于符号位,当我们判断为正数的时候,我们就让结果*1,判断为负数的时候,我们就让结果*-1.

    对于无符号的默认为正数,所以我们设置的isplus初始值为1.

    接下来,我们使用范围for,我们首先要判断字符串中是否有字母,假如有字母时,我们直接返回0。再判断字符串中是否有’+‘或者’-‘,假如有的情况下,我们根据符号来修改isplus的值。假如有数字,我们对数字进行计算,从高位到低位,ch-'0'表示数字字符对应的数字,前一位*10+后一位得到的结果就是我们想要的数字

    范围for结束,i值就是字符串对应的数值,然后我们再×符号位对应的就是数字。

    启示:对于这类字符串转换数字题目,我们可以采用从高位到低位的计算,对于符号位,我们可以设置一个符号值1,通过修改符号值1的正负来控制正负。

    翻转字符串中的单词

    力扣

     思路双指针的嵌套循环。

    我们可以用一个while循环中嵌套三个循环的方法。

    1. class Solution {
    2. public:
    3. string reverseWords(string s) {
    4. int i=0;
    5. int start=0;
    6. int length=s.length();
    7. while(i
    8. {
    9. int start=i;//start表示每一个单词的开头
    10. while(i' ')
    11. {
    12. i++;
    13. }//找到单词的末尾
    14. int left=start,right=i-1;
    15. while(left
    16. {
    17. swap(s[left],s[right]);
    18. left++;
    19. right--;
    20. }//反转一个单词
    21. while(i' ')
    22. {
    23. i++;
    24. }//找到下一个单词的开头
    25. }
    26. return s;
    27. }
    28. };

    思路:双指针

     我们首先让i找到单词的末尾,也就是\0的位置

     i-1就是第一个单词最后一个字母的位置

    我们对start到i-1来实现交换

     接下来,让i跳过这些空格找到下一个单词的头字母位置,然后把i赋值给start

     循环的结束条件是当i刚好要越界的时候。

    每次要进入循环时,把i赋值给start

    然后执行三次循环:找空格,反转字母,找下一个单词的开头。

    启示:对于反转带有空格的字符串的问题,可以采用大循环嵌套小循环以及双指针的问题,慢指针始终指向单词的开头,由快指针来进行操作。

  • 相关阅读:
    2.3进程的三状态和五状态
    数组常用的几种排序方式
    图的结构模板及遍历
    【LeetCode-SQL每日一练】——2. 第二高的薪水
    [源码解析] TensorFlow 分布式环境(4) --- WorkerCache
    Mojo安装使用初体验
    使用 Flutter 和 Firebase 制作!计数器应用程序
    【资损】资损防控的系统规范-收单类服务设计
    VS+Qt+C++ Yolov8物体识别窗体程序onnx模型
    oracle配置开机自启动
  • 原文地址:https://blog.csdn.net/qq_66581313/article/details/127763307