today,is a good day;
遇到了就是遇到了,,今天的題目,如下:
如圖一樣可以輸出這些結果就ok。
使用乙個string類的字串,存下所有的字元;
然後篩選出乙個不屬於數字的符號,用乙個char型別來儲存,順便記錄這個符號所在的位置和下標;
接著就是逆置,分兩塊逆置,符號前面的和符號後面的;
在逆置之後需要的就是刪除首位為0的字元,(我沒有想到刪掉的方法,只想到了把所有的資料前移這樣的粗糙方法),需要注意的就是分清楚前面和後面兩個部分的初始下標和救贖下標。
我的代買如下:
#include
#include
using
namespace std;
int n, k=0;
string s, a;
void
reserve
(int n,
int m)
}int
main()
}reserve(0
, k -1)
;reserve
(k +
1, n)
;for
(int i =
0; s[i]
=='0';)
j++;}
}for
(int i = k+
1; s[i]
=='0';)
}for
(int i =
0; i < s.
size()
; i++
)cout << s[i]
;return0;
}
可以完成題目的要求,但是在編譯的時候只過了乙個監測點。我的**,沒有考慮符號的不同,就是直接對所有符號統一操作;
有乙個精品**如下:
#include
using
namespace std;
intmain()
}int x=cnt;
//記下第乙個數末後乙個的位置,也就是符號的位置,如果是分數或小數就要用
cnt--
;while
(s[cnt]
=='0'
&&cnt>
0) cnt--
;//去除多餘前導0;
for(
int i=cnt;i>=
0;i--
)//輸出第乙個數
cout<
(p==0)
return0;
//無符號return 0
else
if(p==
'%')
else cout<
//其他繼續
int m=s.
size()
-1;while
(s[x+1]
=='0'
&&x1) x++
;//去除末尾0
while
(s[m]
=='0'
&&m>x+
1) m--
;//去除多餘前導0
for(
int i=m;i>x;i--
)//輸出第二個數
cout<
;return0;
}
他這個**細節比我多一些,比如,他是先計算符號前面的資料的,對前面的資料開始倒敘,除0,然後才是對後面資料的操作。 1 6 字串壓縮
c code intcomputecompressedlength const string s return compressedlength string stringcompression const string s std string compressed compressedlengt...
16 字串比較函式
字串處理函式 strcmp s1,s2 可以比較兩個字串的大小,其字元的大小是以 ascii 碼表上的順序決定。該函式首先將 s1 第乙個字元值減去 s2 的第乙個字元值,若差值為 0 則繼續比較對應的下乙個字母,若不為 0 則該差值就是函式的最終結果。請按照該函式的實現原理,寫出乙個新的字串比較函...
LeetCode 16 字串相乘
題目描述 給定兩個以字串形式表示的非負整數 num1 和 num2,返回 num1 和 num2 的乘積,它們的乘積也表示為字串形式。示例 1 輸入 num1 2 num2 3 輸出 6 示例 2 輸入 num1 123 num2 456 輸出 56088 說明 num1 和 num2 的長度小於1...