一、字串迴圈左移
給定乙個字串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...