描述
給定乙個僅由小寫字母組成的長度不超過1e6的字串,將首字母移動到末尾並記錄所得的字串,不斷重複操作,雖然記錄了無限個字串,但其中不同的字串數目是有限的,問不同的字串有多少個?
輸入:
abab
輸出
解釋:記錄了 abab 和 baba兩個不同的字串
思路:如果字串中有迴圈的話,那麼迴圈的部分是通過上面的操作不可能得到和原來不同的字串的。於是問題轉化為求字串中的迴圈節。假設字串長度了n,利用kmp的next陣列求出的迴圈節長度為next[n],那麼我們去掉迴圈部分得到的答案為 len,這裡還需要注意的是黨 n%len == 0的時候 答案是 len ,否則答案是 n。比如 aabbaaa 這個樣例 答案是 7
#include
#include
#include
#include
using
namespace
std;
const
int maxn = 3e6+5;
int next[maxn];
void getnext(string s)
}int main()
return
0;}
每日一題之 網易有道演算法崗筆試題 二分
描述 給乙個整數n,n表示貝殼數量,然後a和b輪流取貝殼數,a先手,每次取固定的m個,b後手,每次取剩下貝殼的1 10,向下取整。這樣取貝殼直到取完,問a如果要獲得至少一半的貝殼,問a最少要取的m數量是多少?n 1e18 input 10output 1思路 二分m就好了,按取貝殼方式取,最後判斷a...
2015百度筆試題(演算法)
有乙個已經排序的陣列 公升序 陣列中可能有正數 負數或0,求陣列中元素的絕對值最小的數,要求,不能用順序比較的方法 複雜度需要小於o n 可以使用任何語言實現 includeusing namespace std double searchmin double int,int int main do...
C語言50題之百度筆試題
大端模式,是指資料的高位元組儲存在記憶體的低位址中,而資料的低位元組儲存在記憶體的高位址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理 位址由小向大增加,而資料從高位往低位放 這和我們的閱讀習慣一致。小端模式,是指資料的高位元組儲存在記憶體的高位址中,而資料的低位元組儲存在記憶體的低位址中,這...