算法:415. 字符串相加

题目分析https://www.yuque.com/yiyezhou/btbolx/uw9x0g

题目分析

https://www.yuque.com/yiyezhou/btbolx/uw9x0g

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。

Given two non-negative integers, num1 and num2 represented as string, return the sum of num1 and num2 as a string.

  • 你不能使用任何內建的用于处理大整数的库(比如 BigInteger)

潜台词:不能使用第三方的系统库

  • 也不能直接将输入的字符串转换为整数形式。

字符串变成整数,出现越界,让问题变得更加复杂。

思考的方向不对。让你无法专注题目本身。不是整体相加 ,变成整数相加。遍历 处理每个字符。

潜台词:真个字符串不能变成整数,单个字符可以 ,问题转为将字符'0'-'9'转换为数字:

  • 非负整数

潜台词:考虑进位

https://www.zhihu.com/question/267093698

二进制里用补码表示表示负数的好处就是不用管加数正负直接加然后直接舍去最高位的进位(溢出部分)就可以得到正确的结果

  • 返回字符串的长度不固定怎办? 整数相加从个位开始,读取从百位开始。顺序不一致

潜台词:string 翻转+扩展特性

  • 2个链表合并,我判断长度是否一致,剩余最后一个字符串怎么处理。逻辑重复出现

需要统一处理:c= a+b+bit

999 +1 =1000

0999

0001

---------

1000

潜台词: 正常访问 和越界访问 在同一个逻辑里。

提示:

  • 1 <= num1.length, num2.length <= 104

潜台词:长度不相等

  • num1 和num2 都不包含任何前导零

潜台词:自己如何处理前导零

代码

class Solution {public:    string addStrings(string num1, string num2) {              string data; //解决长度不确定问题                     //倒序遍历,越界补0      for( int l1=num1.size()-1, l2=num2.size()-1, bit=0;l1>=0 || l2>=0 || bit > 0;l1--,l2--)      {          int a =l1>=0?num1[l1]-'0':0;          int b =l2>=0?num2[l2]-'0':0;          int c =a+b+bit;          bit =c/10;          data.push_back(c%10+'0');      }      reverse(data.begin(),data.end());      return data;    }};

相关

43. Multiply Strings

https://leetcode.com/problems/multiply-strings/

Input: num1 = "123", num2 = "456"

Output: "56088"

434. 字符串中的单词数

You are given a string s, return the number of segments in the string.

A segment is defined to be a contiguous sequence of non-space characters.

434. Number of Segments in a String

https://leetcode-cn.com/problems/number-of-segments-in-a-string/solution/acmjin-pai-ti-jie-you-xiao-dai-ma-wu-xin-hbsi/

212. Word Search II

76. Minimum Window Substring

151. 翻转字符串里的单词

示例 4:

输入:s = " Bob Loves Alice " 输出:"Alice Loves Bob"

输入:s = " hello world " 输出:"world hello"

解释:如果两个单词间有多余的空格,将翻转后单词间的空格减少到只含一个。

解释:输入字符串可以在前面或者后面包含多余的空格,但是翻转后的字符不能包括。

class Solution {public:string delSpace(string input)    {        //s = "  hello    world  "          //s = "hello world      "        //two pointer        int end =0;//new end index         int begin =0; //old string begin index        char temp =0;        int  spaceCount =0;        while ( begin <input.size())        {               temp =input[begin];                          if( ' ' == temp)             {                 if(0 == end)                 {   begin++;                    continue; //不统计:                 }else                 {                     spaceCount++;//统计:分割字符的空格                 }                              }else             {                 if(spaceCount >0)                 {                        input[end++] =' '; //分割字符的空格 保留                        spaceCount = 0;// 判断字符串前排是否有空格                  }//else                 //{                input[end++] =input[begin];                 //}                              }                          begin++;        }            return input.substr(0,end);//[0,end)    }public:    string reverseWords(string s) {        string input = delSpace(s);        int begin =0;        int end =0;                for(end =0;end<input.size();end++)        {            if(input[end] ==' ')            {                //[start,end)是个单词                reverse(input.begin()+begin,input.begin()+end);                begin =end+1;            }        }        //"hello"        reverse(input.begin()+begin,input.begin()+end);              reverse(input.begin(),input.end());              return input;    } };

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/83279.html

(0)

相关推荐

  • 早起一杯水!究竟喝什么水好?别乱喝,医生告知:什么人喝什么水

    在夜晚睡觉的时候,人体内的一些水分会通过呼吸、皮肤等部位消耗。在清晨起床之后,人体内就会处于缺水的状态当中。

    生活 2021年10月1日
  • 宇通纯电动小客车(宇通新能源商混车报价)

    今年两会上,“碳达峰”、“碳中和”被首次写入政府工作报告。

    科技 2021年12月18日
  • 为什么要凸显养育生命的价值,赋予生命力

    培养孩子始终贯彻一个原则,也是生活态度:我不会什么,所以我得追根溯源,永不停息!

    生活 2021年12月9日
  • 慢性失眠症,慢性失眠的原因是怎么造成的

    睡眠不好会导致身体的免疫力下降,对各种疾病的抵抗力减弱,引起记忆力减退、头痛、植物神经功能紊乱,老年人的痴呆症早衰。

    生活 2021年11月17日
  • 苹果13Promax是否值得购买?看完实际测评你就知道了

    2021年9月份苹果公司给广大消费者带来了一款名为苹果13 pro Max的手机机型,相信很多朋友都已经入手了这款手机。那么问题来了,苹果13 pro Max这款手机的实际体验怎么样呢?是否值得购买呢?关于这些问题,接下来小芳就给大家说一下我的实际体验情况,希望能够帮助到大家。手机尺寸与重量:苹果13 pro Max这款手机的厚度为7.65毫米,重量为234 8克,这和苹果13相比较重了65克,手来久了是会酸的。另外苹果13 pro Max这款手机的厚度和上一代相比较也是有所增加,但是不会影响到实际体验就是了。配色方面:小芳我所购买的苹果13 Pro Max是远峰蓝色版,这个配色据说灵感来自于在长城上远望远处的高峰所能够看到的那种蓝色。整体给我的感觉是非常淡雅的,特别适合小芳这种小仙女。屏幕方面:这一次的苹果13 Pro Max也得到了较大的提升,这一次的苹果13 Pro Max这款手机采用的是120赫兹刷新频率O LED材质知识刘海屏。另外小芳想要强调的是这块屏幕是支持自适应动态帧率的,而且最大亮度可以达到1000尼特。说句实话,这块屏幕的体验,确实是会比苹果12系列、苹果13迷你和苹果13等多款机型会更好,即使我们在户外的阳光下,也是能够清楚地看到屏幕的内容的。可能小芳这么说,大家觉得无法直观的感受到这款手机屏幕的强大。小芳还是公布一下DXOMARK屏幕评测分吧,这块屏幕的总得分为99分,在屏幕排行榜中是第一名。性能方面:苹果13Promax这款手机采用的是苹果A15处理器,整体性能是非常不错的。小芳我用这款手机在安兔兔上进行的跑分测试跑分成绩为7778113分,完全是能够满足大多数人日常使用手机的需求的。拍照能力方面:苹果13Promax这款手机采用了全新的“1200万广角镜头+1200万超广角镜头+1200万长焦镜头”相机组合,整体成像效果不错。需要强调的是这一次的苹果13 Pro Max采用了全新设计的光学镜头模组和新版的主摄传感器,能够让苹果13 Pro Max这款手机在不同焦段的成像效果有了较大的提升。可能小芳这么说,大家无法直观的感觉到这款手机的拍照能力,小芳还是给大家提供几张样张吧!主摄样张长焦样张主摄夜拍样张长焦夜拍样张续航能力方面:苹果13Promax这款手机所搭载的电池容量为4352毫安,最大可支持27瓦的有线快充。经实测这款手机充电30分钟,可以充满53%的电量。作为普通消费者的,我们在日常使用苹果13Promax这这款手机的时候,完全是可以做到一天一充的。这款手机的核心配置情况,大家可以参考下图。

    科技 2021年11月5日