字串演算法

2021-07-11 19:00:30 字數 908 閱讀 6596

一、字串迴圈左移

給定乙個字串s[0...n-1],要求把s的前k個字串移動到s的尾部

1)迴圈左移n+k位和k位效果相同

2)迴圈左移k位等價於右移n-k位

演算法要求:時間複雜度為o(n),空間複雜度o(1)

暴力移位

時間複雜度o(n),空間複雜度o(k)

三次移位

時間複雜度o(n),空間複雜復o(k)

優雅的演算法

(x『y』)『=yx

#include

void reversestring(char *s,int from,int to)

}s[j]='\0';

}int main()

給出乙個陣列,找出陣列中最大的乙個數

思路很簡單

int find_max(int *a,int length)

int temp=-1000;

for(int i=0;iif(a[i]>temp)

temp=a[i] 

return temp;

那要是找到最大的兩個數呢?

#include

void select(const int *a,int size,int& nmax,int& nsecondmax)

else if(nsecondmax   nsecondmax=a[i];}}

int main()

;int nmax,nsecondmax;

select(a,sizeof(a)/sizeof(int),nmax,nsecondmax);

printf("max=%d,secondmax=%d\n",nmax,nsecondmax);

printf("sizeof(int)=%d\n",sizeof(int));

return 0;}待續

《演算法》 字串 字串排序

輸入字串和字串對應的組別 組別也是字串的鍵 在滿足組別有小到大排序的情況下,將字串按字母順序排序 第一步,記錄組別的頻率 為了得到某個字串在排序後的範圍,比如組別2肯定在組別1後面,在組別3前面,把每個組別有多少個人記錄下來,方便我們定位 第三步,分類 該組別的位置起點 向後挪一位 因為當前位被用了...

字串演算法 字串雜湊

方法以,m進製的形式來表示乙個字串,那麼這個字串就可以輕鬆計算 i j 之間的hash值 當只有小寫 大家字母時,m 131 而hash值,可以使用unsigned long long 來表示,這時不再需要求餘 方法應用 字串匹配。思路 對比hash值 允許k次失配的字串匹配 即 允許k次字元值不對...

演算法 字串

題目描述 給出一串字串,求最少需要刪除多少個字元,才能使得剩下的字串滿足以下性質 出現最多的字元的數量大於等於字串長度的一半 輸入描述 輸入包含一行,為給出的字串。字串長度小於等於100000,保證全是小寫字母 如下 刪除的字串的數量 public static intdeletegreaterth...