算法: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月13日
  • 冬日进补的菜,明日冬至,记得“吃2肉,食3菜”,营养又暖身,顺顺利利过寒冬

    时间过得真快,转眼间,2021年已经进入了尾声,今年的第22个节气—冬至,已经悄然而至。冬至属于四时八节之一,也是北半球各地白天最短、黑夜最长的一天。冬至过后,真正的严寒天气将到来,也可以说是凛冬将至。

    生活 2021年12月20日
  • 为什么老年人有“老年味”?注意这两个习惯,老了可能就没味道了。

    为什么身边那些上了年纪的人,身上每每总是散发着一些奇怪的异味,难道是他们都不爱干净吗?实际上这种味道并非是“不讲卫生”所决定的,而是随着人体衰老,所必然会产生的“老人味”。

    生活 2021年11月30日
  • 打呼噜自己知道吗,怎么可以打呼噜

    晚上睡觉打呼噜的烦恼,你们有没有?从现在开始,请不要再为此烦忧,也不要再因此而担心自己的身体是不是出现毛病了。因为我要告诉你:打呼噜的人会长寿。

    生活 2021年12月21日
  • 湿疹会引起,为何得湿疹

    二宝出生不到满月时候皮肤出现瘙痒症状,耳朵流脓水,从此便是儿童医院的常客。

    生活 2021年11月13日