16 字串倒置,,這麼難嗎?

2021-10-08 03:44:07 字數 1717 閱讀 9784

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...