演算法筆記學習記錄 字串

2021-10-02 05:11:28 字數 1698 閱讀 2997

這是我學習演算法筆記的記錄性質的部落格,記錄我寒假學習演算法筆記的過程。

把手放在鍵盤上時,稍不注意就會往右錯一位。這樣的話,q就會變成w,j變成k等。

輸入乙個錯位後敲出的字串,輸出打字員原本想打出的句子。

樣例輸入

o s, gomr ypfsu/

樣例輸出

i am fine today.

分析

沒吃輸入乙個字元,都能輸出乙個字元,但是問題在於:如何進行變換嘞?如果用if語句也不是不行,但是那時一種比較麻煩的方法,顯然不可取。於是我們可以採用陣列儲存的方式,這樣使用電腦判斷顯然比手打舒服多了。

**:

#include

#include

using

namespace std;

string s=

"qwertyuiop\asdfghjkl;'zxcvbnm,./"

;int

main()

return0;

}

在中文中,左雙括號是「」,右括號是「」,現在又一篇英文的文章,你的任務是把它的""轉換成中文的「」。

樣例輸入:

「to be or not to be」,quoth the bard,「that is the question」.

樣例輸出:

「to be or not to be」,quoth the bard,「that is the question」.

分析:

設定乙個標誌變數即可判斷雙引號是左還是右了

**:

#include

#include

using

namespace std;

intmain()

else

}return0;

}

如果乙個字串可以由某個長度為k的字串重複多次得到,我們就說該串以為週期。例如,abcabcabcabc以3為週期(注意,它也以6和12為週期)。輸入乙個長度不超過80的串,輸出它的最小週期。

例如:

輸入:hohoho

輸出:2

分析:

一種比較容易懂的方法:遍歷迴圈判斷最小週期。

判斷方法:for語句從1開始到字串長度。我們不難發現只有能被字串長度整除時,才可能時最小週期,所以可以用if語句進行篩選。其次,篩選方法也比較機械,就是從週期的位址開始往後面乙個字元乙個字元的與第乙個週期內的字元比較。

這裡我們可以巧用%符號,例如:j%5的結果不論j一直加到多少它都是在5以內迴圈的。

**:

#include

#include

#include

using

namespace std;

intmain()

}if(ok)}}

return0;

}

字串學習記錄

字串內建函式 encode 編碼 decode 解碼 編碼 網路應用 中文一般會涉及編碼問題 例如 meg 上課啦!認真聽課 中文的 gbk 中文 gb2312 簡體中文 uincode meg 上課啦!認真聽課 result meg.encode utf 8 print result meg 上課...

學習筆記 基礎字串演算法

這裡使用 基礎 僅代表整合一些篇幅小的演算法與後續幾篇大的字串演算法文章區別。留給自己補科技樹的時間越來越短了。字串雜湊 容易實現,可以快速比對兩個串是否相等。一般可以使用自然溢位 hash 注意使用非自然溢位時,應當把膜數取比字串數量高乙個數量級的質數。最小迴圈表示法 考慮有 sam 構建的做法。...

字串 學習筆記

這篇部落格只是記錄一下我在做題過程中碰到的一些關於字串巧妙的處理方式 可能只對我這個菜雞來說相對巧妙吧 1 stringstream的使用 第一次碰到stringstream的使用是在紫書上面p112,題目是uva10815。前幾天補字串的題目的時候在 洛谷p1308統計單詞數 也碰到了一題可以使用...