一次C語言實現過濾冗餘字元出現的問題

2021-05-04 22:35:46 字數 368 閱讀 1267

開始**是這樣寫的:

結果除錯的時候總是出現結果錯誤,於是我代入一組資料手工計算,發現當兩個以上字元連續出現的時候,就會略過向前相鄰的字元比如:

輸入「aaa」機器在檢測的時候會發現第乙個「a」與第二個「a」相同,則用第三個「a」覆蓋第二個「a」,繼續向後檢測。機器向後檢測就略過了第三個「a」補充到第二個位置的「a」,所以執行結果是「aa」,沒有將多餘的「a」全部刪除,未達到預期目的。

錯誤是由於使用了傳統習慣上的for迴圈第三個表示式做累加器,這樣只要乙個迴圈週期結束,就會使累加器工作,而後面的資料向前錯了一位,就需要暫停累加重新比較一下,所以累加器不能放在for迴圈中,而是先重新比較,如果沒有問題再進行累加,使用了判斷語句進行限制。

正確的**如下:

找出三個只出現一次的數字 C語言實現

題目 乙個陣列中有三個數字a b c只出現一次,其他數字都出現了兩次。請找出三個只出現一次的數字。分析 如果我們把陣列中所有數字都異或起來,那最終的結果 記為x 就是a b c三個數字的異或結果 x a b c 其他出現了兩次的數字在異或運算中相互抵消了。我們可以證明異或的結果x不可能是a b c三...

CRC冗餘校驗的C語言實現

crc即迴圈冗餘校驗 是資料通訊領域中最常用的一種查錯校驗碼,其特徵是資訊字段和校驗欄位的長度可以任意選定。迴圈冗餘檢查 crc 是一種資料傳輸檢錯功能,對資料進行多項式計算,並將得到的結果附在幀的後面,接收裝置也執行類似的演算法,以保證資料傳輸的正確性和完整性。對於16位迴圈冗餘效驗 crc 16...

第一次出現一次的字元

題目 在字串中找出第乙個出現一次的字元。如輸入 abaccdeff 則輸出 b 分析 最直觀的解法從頭掃瞄這個字串中的每乙個字元。當訪問到某個字元的時候拿這個字元和後面的字元相比較,如果在後面沒有發現重複的字元,那該字元就是只出現一次的字元。如果字串有n個字元,每乙個字元可能與後面的o n 個字元比...