算法: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)

相关推荐

  • 你跟孩子有什么仇,非要偷偷溜走

    作者:李点点,旅居德国的漫画妈妈,儿子7岁,女儿3岁,擅长用漫画记录二胎生活鸡飞狗跳的日常,分享德式育儿干货。她的漫画全网累计阅读量8000多万,还在公众号免费教孩子们画简笔画,在...

    生活 2021年9月26日
  • 阿里p9年薪知乎(阿里p8和p9的年薪)

    过去的二十年中,我们似乎总能够听到层出不穷的致富故事,但近些年来,这样的事情似乎越来越少,不常听说了,好像互联网的小富挺多,但波澜起伏的大富,正在慢慢远离我们。来看一段文字,是一位刚刚失业的四十岁高级码农,在近二十年的岁月中,努力积攒下巨额财富的经历:这是知乎问题「40岁因为财务自由决定不上班的人,个人资产总和到底有多少」下的匿名回答。这位答主的运气很好,互联网、房地产、股票,一件不落,基本都赶上了,妻子能力也很强,在十几年的时间里,两个人共同打拼,成功小跑进中产。可信度高吗,之前和一些前辈打过交道,从他们的经历,我认为这个回答的可信度还是不低的。但的确他的收益巨大,达到了 1.5 个小目标,超过了一般人对于打工人能够摸到高度的认知,所以在评论区,有很多人质疑这个帖子的真实性。相较而言,另外一个同样在互联网工作的 45 岁老哥的回答,更容易让我们相信,甚至有一点感同身受:已经过去的二十年,的确是一个好时代,当我们以过来人的眼光来看,几乎遍地是机会。偶尔朋友聚会,酒至酣处,常有人会说要是早生些许年头,也能如何如何。最开始听见这样的话语,我是不太赞同的,那时候刚进入社会,初生牛犊不怕虎,看到什么新机会,一副跃跃欲试的样子。总觉得事在人为,每个时代都会属于它的机会,厉害的人,到哪里都会发光,都会拥有自己的事业和成就。你问我现在还这样想吗,是的,我还这样想,不过,有了一些改变。以前我认为成事在人,现在我开始觉得,厉害的人,也得懂得驭势,懂得寻找机会、把握机遇。尽管很多人认为,已经过去的二十年,是拥有最优机会的年代,但我还是觉得,这只是开始,我们还是处于一个激烈变化、拥有诸多机会的时代。理想很丰满,现实很骨感,尽管总觉得自己好像能够做成一点「大事」,但现实中,我就是一个天天写代码、掉头发的码农,好像大事业总是遥不可及。天天这样埋头写代码,探索数据背后的逻辑,虽然我有些乐在其中,因为从中可以发现看似无序世界背后,其实是由很多朴素的规律、逻辑组成,作为理科男,我喜欢这种用技术抽丝剥茧的过程。但闲下来的时候,也会思考,每天这样埋头苦干,时间一点点消逝,再过几年就三十岁了,似乎距离自己期待的事业,有些遥不可及。那做点什么,才能改变这样的局面。我开始在脑海中寻找,自己认识的、知道的厉害的人,身上都有哪些共同特点,我发现,努力思考、总结一番,还是能够找出这些优秀者的共同点的:1. 他们在所处的行业躬身多年,专业技能扎实、职业素养过硬,能够让合作方认可、赞赏他们的专业度;2. 他们信息通达,有各类渠道可以获取行业一手讯息,能够最短的时间内了解到行业动态,并理性的分析各类变动对自己职业、赛道的影响;3. 他们足够自律,能够为了既定的目标,放弃过多的休息和娱乐时间,在旁人看来,很是辛苦。当然,这种辛苦程度,和他们认知、财富的增长速度一样,让人惊叹。说实话,我在有意识的去模仿他们,把工作做好,日常多结交朋友,尽量抽出时间来规划未来和锻炼身体,为每一个心仪的机会做着准备。累吗?在北京,每天想着这些事情,说实话,挺累的。我以前是一个特别回避辛苦的人,后来我发现,即使我可以每天散漫的按照自己的想法来生活,我也没有得到想象中的自由,反而会因为做事不太靠谱,不深入思考,漫不经心,遭受了一些意想不到的烦恼。反而是让自己苦一点,去追求一些世俗的认知、财富之后,发现技能有所增长,思考也会更为全面深入,为人处世也在保留真诚的同时,尽可能的面面俱到一些。这样世俗的方式,反而收获的成长和自由,也不必散养自己来的少。所以我想,趁着年轻,还是选择继续在社会这个大染缸里打拼,毕竟,大隐隐于市嘛~

    科技 2021年12月17日
  • 五菱宏光miniev是电动车吗,五菱宏光mini一ev纯电动车有空调吗

    自从五菱宏光MINI EV上市以来,可以说让中国消费者见识到了什么是真正的高性价比。28,800的纯电动汽车价格确实给市场带来了很大的惊喜。并且凭借着先发优势,五菱宏光MINI EV上市之后就取得了很大的销量,甚至在销量上超过了特斯拉model3,成为目前中国最畅销的纯电动汽车,但其实在同价位当中,五菱宏光MINI EV并不是唯一的选择。长安汽车旗下也有一款纯电动汽车叫做奔奔E-star,而巧合的是,这款车的价格2.98~5.98万的价格与五菱宏光的价格非常相似。

    科技 2021年10月22日
  • 妻子害怕生孩子,丈夫该怎么办?妈妈:亲密的是“别人的丈夫”

    在人们的固有观念里,人到了某个年龄就应该结婚,过了30岁还没结婚,身边的亲朋好友就开始催婚了。但随着时代的发展,人们的观念也在慢慢地改变,不想结婚的人越来越多,特别是女性,这是为什么呢?

    生活 2021年11月12日
  • 3万以内的小生意,3万左右的小生意

    在2021年的胡润全球富豪榜的榜单上有着三位特殊人士上榜,特殊的原因在于这三人是亲兄妹。这三兄妹分别是陈湖雄、陈湖文、陈雪玲。他们分别以二百四十亿元、二百三十五亿元、一百四十亿元的资产登上了本次的富豪榜,那么这三兄妹又是凭借着什么赚取了如此庞大的身家的?

    生活 2021年10月22日
  • 子女对于父母而言意味着什么,父母对儿女的忠告

    如何让孩子在生活中获得成功?在孩子的成长过程中,你应该坚持灌输这些为了取得成功必须遵守的准则:

    生活 2021年10月30日