常用演算法題

2021-07-08 15:05:36 字數 2907 閱讀 3297

1.

給定乙個字串

str,

返回str 

的最長無重複字元子串的長度。舉例,

str=

"abcd"

,返回4

。str=

"aabcb"

最長無重複字元子串為

"abc",返回

3 #include

#include

#include

#include

#define max(a,b)  ((a>b)?(a):(b))

#define min(a,b)  ((a(a):(b))

int  maxunique(char str);

char *getrandomstring(int len);

char *maxuniquestring(char * str);

int main(int argc,const

char * argv)

char *getrandomstring(int len)

return str;

}char *maxuniquestring(char * str)

int map[256];

for (int i =0; i <256; i ++)

int len = -1;

int pre = -1;

int cur = 0;

int end = -1;

for (int i =0 ; i !=strlen(str); i ++)

map[str[i]] = i;

//printf("pre = %d,cur = %d,len = %d,end = %d,map[str[%d]]=%d\n",pre,cur,len,end,i,map[str[i]]);

}char *desc = (char*)malloc(sizeof(char)*len);

strncpy(desc, str+(end - len + 1), len);

return desc;

}int maxunique(char str)

int map[256];

for (int i =0; i <256; i ++)

int len = 0;

int pre = -1;

for (int i =0; i!= strlen(str); i++)

return len;

}2.給定乙個陣列arr,陣列長度為len。求滿足0<=a<=b

int getmax1(int arr)

int res = 0;

for (int i =0; i < count -1; i ++)

int min = int32_max;

int res = 0;

for (int i =0; i< count; i++)

return res ;

}int *getrandomarray(int len)

return arr;

}

3.

給定兩個字串a和

b,其中只有小寫字元,已知

a的字典序小於b,

求在a和b

的字典序之間,有多少個字串。以長度較長的一方為準。

例如:a=「ab」

,b=「ac」

。他們的字典序挨著,所以返回0。

例如:a=「a」

,b=「cc」。b

的長度較長為

2,所以a和

b之間的字串包括:

」aa」..」az」,」b」,」ba」..」bz」,」c」,」ca」,」cb」

。一共56個

例如:a=「aa」,b=「c」。a

的長度較長為

2,所以所以a和

b之間的字串包括:

「ab」..」az」

,「b」

,「ba」..」bz」

。一共52個。

long gapnumber(char *str1,char *str2)

long len = max(str1_len, str2_len);

return (pos(str2, len) - pos(str1, len))-1;

}long pos(char *s,long len)

, , , , }; t

代表如下三角形: 2

3 46 5 7

4 1 8 3

找出從其頂部到底部的所有路徑中,路徑上的整數構成的最小和。

從頂部向底部移動時,每次可以移動到下一行中左邊或右邊的相鄰整數,比如如上的例子,

最小整數和為

11,即

2+3+5+1=11。

int minpath(int (*t)[4],int len)

}return t[0][0];

} int t[4] = ,,,

};printf("count =%d\n",minpath(t,4));

5.求最長的包含相同數目的

1的子陣列長度,要求索引位置一樣,

即a[i]

到a[j]

包含的1

的個數和

b[i]

到b[j]

包含的1

的個數一樣。

int maxlength(int arr1,int len1,int arr2,int len2)

for (int i = 0; i< len1; i ++)

char *map = (char*)malloc(sizeof(char)*len1);

map[0] = -1;

int len = 0;

int sum = 0;

for (int i = 0; i

Java中常用到的演算法題

1.遍歷出乙個資料夾下的所有檔案,並展示出層級關係,資料夾優先顯示,最後以一定格式寫入文字中 遞迴實現 遍歷出乙個資料夾下的所有檔案,並展示出層級關係,資料夾優先顯示,最後以一定格式寫入文字中 param args public static void main string args privat...

演算法 常見演算法題

演算法題 假如有100個不相同的數,比如從1到100,怎樣使用10次取出其中的10個不同的數字,要求每個數取出的概率一樣 一開始沒有說10次,所以我說,使用乙個random函式,以時間為種子來取,當取出乙個時,做標記,下次再取到這個數時,重新取一次 然後他就說了如果只能夠取10次怎麼辦?一開始我想到...

基礎演算法題

1.一百萬富翁遇到一陌生人,陌生人找他談乙個換錢的計畫,計畫如下 我每天給你十萬,而你每天只需要給我一分錢,第二天我仍然給你十萬元,你給我二分錢,第三天我仍然給你十萬,你給我四分錢.你每天給我的錢是前天的兩倍,直到乙個月 30天 百萬富翁很高興,欣然接受拉這個契約.請編寫乙個程式計算這乙個月中陌生人...