日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

Lintcode 408 解题思路及c++代码

發布時間:2025/5/22 c/c++ 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Lintcode 408 解题思路及c++代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

408. 二進制求和

題目:

給定兩個二進制字符串,返回他們的和(用二進制表示)。

樣例
樣例 1:
輸入:
a = “0”, b = “0”
輸出:
“0”

樣例 2:
輸入:
a = “11”, b = “1”
輸出:
“100”

思路:

剛拿到手的時候,心想就是一個二進制而已,寫一個二進制相加就行了,但是上手的時候坑就特別多了。
1.我踩的第一個坑:我心里想著是從個位相加,但是并沒有代碼卻是分別都從下標為0開始相加,這是一個大坑;
2.第二個坑:兩個字符串長度不等的時候怎么做呢?我一開始想到的是先算重疊部分,后面再相加,但是實現起來就很暈了。
3.第三個坑:這是基本功的問題,一開始int直接強制轉化成char,用的是char(a),可是一直亂碼;后面直接用char(a+‘0’);于是乎我是一直把強制轉化想簡單了,以為直接用就了,其實是利用ASCII做的轉換。char(1)是把1轉換為ASCII為1的字符;我一直一位是把1轉化成1;
接下來講講大概的思路:
第一步:我們要把字符轉化成數字,并且做一個二進制相加;
第二部:在轉換成數字的時候需要注意一個點,字符串長短不一的時候如何處理。我的做法是用字符串的長度length-1做自減,如果等于0說明是最后一個,小于0則這個字符串已經結束,那么接下來的每次運算,直接給一個0,最后跳出循環的條件則是兩個長度都為負。
第三部,最后快結束的時候還要看看最后的進位flag是否為1,為1的話還在最前面加個1。

最后附上代碼:在這里插入代碼片

string addBinary(string &a, string &b) {// write your code hereint c,d,e,flag;string sum="";int i=a.size()-1,j=b.size()-1;for(;i>=0||j>=0;i--,j--) {if(i<0) c=0;else c=a[i]-'0';if(j<0) d=0;else d=b[j]-'0';if(flag==1) {e=c+d+1;flag=0;}else e=c+d;if(e>=2) {sum=char((e-2)+'0')+sum;flag=1;}else sum=char(e+'0')+sum; }if(flag==1) sum='1'+sum;return sum;}```

總結

以上是生活随笔為你收集整理的Lintcode 408 解题思路及c++代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。