大學期間專案做了不少,而在演算法題方面還是個小白。藉著考研機會,把pat甲級刷一遍,同時記錄一下心得。主要參考的是柳神的題解,略過了不會考或考的可能性很小的題。如果做法和題解不大一樣,就貼一下自己的**。
挺簡單的~(畢竟第一題)熟悉了一下to_string()的用法。
原題鏈結
題解自己的做法複雜了~通過取餘和整除得到每一位數字也是可以做的,但用to_string()會更快。
原題鏈結
題解
stl真香~( ̄▽ ̄)/還是挺簡單的一道題。
原題鏈結
題解題目不難,理解題意最重要~注意隱含條件。
ctype庫中,有isalpha()和isdigit()快速判斷是否為數字和小寫字母。
計算日期時候,隱含了相同大寫字母是在a~g範圍的條件。
原題鏈結
題解先儲存e後指數,然後依據指數的正負、小數點的位置分成四種情況討論。看起來比較複雜,但思路很簡單,細心一點就不會出錯。
原題鏈結
題解對每個字串倒置之後再進行比較,熟悉了一下reverse()和getline()的使用。
輸入的字串可能包含空格,因此不能用cin輸入,而應該使用getline(),並且注意使用getchar()接收回車符。
原題鏈結
題解這道字串處理題目做了好久,主要是輸出零的格式沒想明白,太痛苦了。。。設定了兩個變數,zero決定每四位是否輸出「億」「萬」,keepzero代表是否有累積的0。我特意處理了一下字串頭部的多餘0,在這題裡面應該是多餘的。
3號測試點的輸入是0,故需要額外做一次判斷。
#include
using
namespace std;
string str[10]
=;intmain()
while
(s[0]==
'0'&&s.
size()
>
1) s.
erase
(s.begin()
);//去除多餘0
for(i=
0; isize()
; i++
)else
if(s.
size()
-i==9&&
!zero) res.
push_back
("yi");
if(s.
size()
-i==5&&
!zero) res.
push_back
("wan");
}if(res.
size()
==0) res.
push_back
("ling");
//額外判斷整個串是否為0
for(i=
0; isize()
; i++
)return0;
}
原題鏈結
題解使用isalpha()判斷是否包含字母,對確定是數字的使用stod()轉化,並用string.find()方法確定小數點位置,判斷是否包含三位及以上的小數。
一開始沒有用string.find()方法確定小數點位置,而是選擇stod(s)*100-(int)(stod(s)*100)是否為0判斷小數字數,然而兩位小數0.12代入該式,得到的結果是1卻不是0,不是很明白為什麼會這樣。
原題鏈結
題解讀題讀了好久才懂什麼意思。。讀取前乙個串,比如「d11231」,有1個d,2個1,1個2,1個3,1個1,則下乙個串為「d112211311」。注意,不是先統計每個位置的數再生成下乙個字串,而是統計連續相同數字/d的個數。
原題鏈結
題解使用stoi()轉化子串,按序判斷是否為素數即可。
原題鏈結題解
字串處理的題型整體不難,就是小細節特別多,熟悉string的使用後細心一點就能做出來。
演算法題(一) 字串
public static string submax string strarr else if max k system.out.println max return arrays.copyofrange strarr,start,end 1 給定兩個字串str1,str2。如果兩者字元種類和相...
字串(一) 字串Hash
今天開一手最不 tao 擅 yan 長的字串演算法 字串hash演算法。似乎提到字串的話,kmp應該是更為常見的一種,但是hash有它的優點,被犇們稱為 優雅的暴力 何謂hash?hash的中文稱為雜湊,這當然是音譯,直譯過來就是雜湊,或者也有叫預對映的。雜湊的作用就是通過某個特殊函式的對映,將任意...
第一字串 Trie Topology
bessie最近在玩字串。她發現通過改變字母的順序可以使一些字串排在其他所有的字串之前 按字典序從小到大排序 比如說,bessie找到了對於字串 omm moo mom 和 ommnom 她可以用標準的字母表把 mom 排在最前面,也可以用字母表 abcdefghijklonmpqrstuvwxyz...