![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
练习题
练习
a小菜a
这个作者很懒,什么都没留下…
展开
-
在字符串中找出第一个只出现一次的字符(两个角度)。
在字符串中找出第一个只出现一次的字符。(七夕先放个老婆)!!!这是一道2006年Google的笔试题在字符串中找出第一个只出现一次的字符。如输入 “abaccdeff” ,则输出 ‘b’ 。要求时间复杂度为 O(n)。以空间换时间需要开辟新空间,这样才能保住时间符合要求#include<stdio.h>#include<assert.h>char Find_First_one(char *a, int n){ int newNum[256] = { 0原创 2021-08-14 20:46:41 · 270 阅读 · 1 评论 -
【指针进阶01】字符指针
字符指针指向字符型数据的指针变量。每个字符串在内存中都占用一段连续的存储空间,并有唯一确定的首地址。即将字符串的首地址赋值给字符指针,可让字符指针指向一个字符串。话不多说,直接上代码test1int main(){ char ch = 'w'; char * pc = &ch; const char* p = "hello bit";//"hello bit"是一个常量字符串 printf("%s\n", p); printf("%c\原创 2021-08-13 22:10:08 · 126 阅读 · 0 评论 -
杨氏矩阵(判断某个数字是否存在)
有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的, 请编写程序在这样的矩阵中查找某个数字是否存在。要求:时间复杂度小于O(N);例:1,3,52,4,63,6,9#include<stdio.h>int FindNum(int a[][3], int x, int y, int f){ int i = 0; int j = x - 1; while (j >= 0 && i < y) { if (a[i][j] <原创 2021-08-11 21:51:03 · 132 阅读 · 0 评论 -
判断字符串
写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。例如:给定s1 = AABCD和s2 = BCDAA,返回1给定s1 = abcd和s2 = ACBD,返回0.AABCD左旋一个字符得到ABCDAAABCD左旋两个字符得到BCDAAAABCD右旋一个字符得到DAABC这里用到了库函数strcpy,strcat,strstrstrcpy: 将源字符串拷贝到目标空间;strcat: 追加字符串到目标空间字符串后面;strstr: 查找子串·;int findRo原创 2021-08-10 21:40:38 · 168 阅读 · 0 评论 -
字符串旋转k个字符
字符串左旋实现一个函数,可以左旋字符串中的k个字符例如:ABCD左旋一个字符得到BCDAABCD左旋两个字符得到CDAB设计循环使其可以旋1次,然后让他执行n次是一个最简单的思路:void LeftRotate(char* s, int k){ int i, j, tmp; int len = strlen(s); k %= len; for (i = 0; i < k; i++) //执行k次的单次平移 { tmp = s[0]; for (j = 0; j &l原创 2021-08-10 21:28:47 · 172 阅读 · 0 评论 -
递归的简单练习
递归打印一个整数每一位#include<stdio.h>void Print(int n){ if (n < 10) { printf("%d ", n); } else { Print(n / 10); printf("%d ", n % 10); }}int main(){ int n = 0; printf("input number:>"); scanf_s("%d", &n); Print(n); return原创 2021-07-24 20:58:04 · 272 阅读 · 2 评论 -
真実はいつも一つ(真相只有一个)
猜名次5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果:A选手说:B第二,我第三;B选手说:我第二,E第四;C选手说:我第一,D第二;D选手说:C最后,我第三;E选手说:我第四,A第一;比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。考虑到一共五个人,直接模拟推理有些太难,计算机最擅长的遍历此时就会派上用场,将每个人从第1到第5来一遍,则一共会产生5^5种可能性,这个只需要一个5层循环即可搞定。但是这样会导致一些不期望出现的结果出现,因为我并没有查重,所以会出现两个人抢名原创 2021-08-09 21:36:52 · 881 阅读 · 0 评论 -
杨辉三角+(改进)
杨辉三角11 11 2 11 3 3 1能发现数字规律为:d[i][j] = d[i - 1][j] + d[i - 1][j - 1]所以我们只要按照这个方法填表即可。#include<stdio.h>#include<windows.h>void YangHuiTriangle(int n){ int data[30][30] = { 1 }; //第一行直接填好,播下种子 int i, j; for (i = 1; i < n; i++)原创 2021-08-09 21:33:12 · 84 阅读 · 0 评论