關於棧幀的兩道題型

2021-08-10 14:00:12 字數 1585 閱讀 2185

//1.實現乙個函式,可以左旋字串中的k個字元。

//abcd左旋乙個字元得到bcda。

//abcd左旋兩個字元得到cdab。

//分析:將abcd左移4個字元得到abcd,所以左移週期為4,所以有效的左旋次數為:count%strlen(str)

//**1:常規方法,讓a保持不動,bcd移位,得到bcda;呼叫bcda,讓b保持不動,cda移位,得到cdab;···

#include #include #include #pragma warning(disable:4996)

static leftmovecore(char *str, int len)

}int main()

//**2 按左旋次數將字串分為兩部分,並對其分別進行區域性逆置,最後全體逆置。

//abcd1234 左移3個字元

//abc d1234 (0 str+count-1)

//cba 4321d (str+count str+len-1)

//d1234abc

#include #include #include #pragma warning(disable:4996)

static void reversestr(char *start, char *end)

}void leftmove(char *str, int len, int count)

int main()

//**3 將字串拼接到自身後,左旋n位,從n+1位開始往後讀取字串的總數字,即可得到目標字串。

//abcd1234->abcd1234abcd1234

#include #include #include #pragma warning(disable:4996)

void leftmove(char *str, int len, int count)

int main()

//2.判斷乙個字串是否為另乙個字串旋轉之後的字串。

//例:給定s1=aabcd和s2=bcdaa,返回1;給定s1=abcd和s2=abcd,返回-1.

//分析:

//法一:乙個字串不動,將另乙個字串旋轉一次與其比較一次,依次迴圈,若此過程中比較相等,則返回1;否則,返回-1.

//法二:將某一字串自身拼接到自己後面,再利用strstr()在自身中找所需的字串。

//str="abcd1234"

//substr="4abcd123"

#include #include #include int findleftmove(char* str, char* substr)

int newsize = 2 * strlen + 1;

char* mem = (char *)malloc(sizeof(char)*newsize);

strcpy(mem, str);

strcat(mem, str);

if (strstr(mem, substr))//在men字串中查詢substr字串

free(mem);

return -1;

}int main()

兩道簡單的題目

第一次發表文章,就發表兩到簡單點的題目好了 第一道題目是這樣的 現在有乙個整數的陣列,然後給定乙個目標數,我們要做的是找出陣列中唯一存在的兩個不同的數,其相加能夠得到這個目標數,然後返回這兩個數的下標比如 given nums 2,7,11,15 target 9,because nums 0 nu...

今晚的兩道 bc

第一道題 beautiful palindrome number 簡單組合計數問題,手算打表就好 大概十五分鐘左右搞定 第一次 提交竟然 wa了一次 有乙個小小的坑在那。author jusonalien email jusonalien qq.com school south china norm...

關於fork有意思的兩道題目

include include include intmain 這道問題並不難,最快的想法就是2 4 8 16 32,因為第一層的printf會有兩個程序列印,第二層會增加到4個,以此往下,就得出62行。include intmain 讓我們仍然採用上題的演算法,使用乙個佇列 首先,將主程序產生子程...