编程实践
AlphaSZH
bruce's fans
展开
-
判断数组中的元素是否连续
第一种,先排序,再比较int isContinuousArray(int a[], int len){//判断数组是否连续 int i=0,count_0=0; for (i = 0; i < len; ++i) {//先排序 if (a[i]==0) count_0++; for (int j = i; j <...原创 2019-04-23 13:53:20 · 4552 阅读 · 0 评论 -
01背包问题
测试数据#include <bits/stdc++.h>using namespace std;int getMax(vector<vector<int>> bags,int X){//bags:包裹 X:总容量 int nums = bags.size();//包裹数量 int prices[nums+1][X+1];//这里多一行多一...原创 2019-08-07 18:22:50 · 97 阅读 · 0 评论 -
扑克牌问题
题目手里有一副牌,取第一张牌放到桌子上,取第二张牌放到牌堆底部,取第三张牌放到桌子上,取第四张牌放到牌堆底部… 直到手里没有牌了。现在桌子上的牌是从 1 到 n 按顺序排列的,求牌在手里时的顺序是怎样的?思路比如一副牌在手里时的顺序是 [1 5 2 4 3],经过上面的规则变换后在桌子上的顺序就是 [1 2 3 4 5],变换过程是这样的:桌子手里操作0:[][...原创 2019-08-19 09:53:01 · 1144 阅读 · 1 评论 -
编程——哈希表
求最大公共子串的长度例如 “abcabcbb”->3 “bbb”->1思路:采用双指针,low,high。每次用high指向的元素在哈希表中查找上一次出现的位置,若该位置>=low,则说明在low到high之间已经存在该元素,那么令low为上一次出现位置+1,修改该元素最后出现的位置;若<low,说明low到high中没有该元素,将该元素入map,并计算最大长度。in...原创 2019-07-20 21:02:09 · 664 阅读 · 0 评论 -
编程——数学类专题
1 二进制加法给定两个字符串a,b,每个字符串中是二进制数,编程实现两个数相加的结果。例,a=“11”,b=“1”,return “100”思路:首先逆置字符串使低位对齐,每遍历(按最大的长度遍历)一次,两个对应位相加,再加上低位的进位,若某个字符串上没有数字的时候(下标是否>=字符串长度-1),加上0。用String累加每一位上产生的结果,最终把String反转,就是最终结果。st...原创 2019-07-19 21:15:27 · 789 阅读 · 0 评论 -
字符串重排
void parseString(char* str){ int i,digitCount=0,alphaCount=0; int index1=0,index2=0,index3=0; char temp[strlen(str)]; for (i = 0; str[i]!='\0'; ++i) { if (isdigit(str[i])) ...原创 2019-04-20 14:46:01 · 3126 阅读 · 0 评论 -
在字符串中删除特定字符
第一种方法:遍历原数组,在待删数组里遍历是否删除该元素char* removeChars(char str[], const char remove[]) { int len = strlen(str); char *temp=new char[len]; int i = 0, j, count = 0; bool state = true; while ...原创 2019-04-20 10:38:55 · 1501 阅读 · 0 评论 -
查找两个字符串中的最大公共子串
int find(char* str,char* sub){//看sub子串在str中是否存在 int i=0,mem=0,j=0; while (str[i]!='\0'){ if (str[i]!=sub[0]){ i++; } else{ mem=i; wh...原创 2019-04-19 20:50:50 · 724 阅读 · 0 评论 -
判断链表是否有环
int isLoopList(LinkList L){ LinkList slow,fast; slow = L; fast = slow->next; if (fast==NULL||fast->next==NULL) return 0; while (fast!=NULL){ if (fast==slow||f...原创 2019-04-24 15:19:40 · 111 阅读 · 0 评论 -
找出0/1字符串str中0和1出现的最大的次数
int getMaxCount(char *str,int *max0,int *max1){//找出字符串str中0和1出现的最大的次数 if (str==NULL||str==""){ cout<<"str error!!"; return 0; } bool state0 = false,state1 = false; ...原创 2019-04-19 16:12:17 · 271 阅读 · 0 评论 -
C++实现字符串的strcmp()、strstr()、strcpy()
字符串比较strcmp()int mystrcmp(char *str1, char *str2){ int i=0; while(str1[i]!='\0'&&str2[i]!='\0'){ if (str1[i]>str2[i]){ return 1; } else if (str1[i]<s...原创 2019-04-18 08:58:16 · 486 阅读 · 0 评论 -
把一个字符串倒置,并保持其中每个单词顺序不变
int reverseStr(char* str,int begin,int end){ char tem; if (str==NULL) return 0; if (begin<end){ tem = str[begin]; str[begin] = str[end]; str[end] = tem;...原创 2019-04-18 14:38:33 · 649 阅读 · 1 评论 -
字符串循环右移
void loopMoveStr(char* str, int n) {//将字符串循环右移n个数,例如"abcdefg"右移3位为"efgabcd" int len = strlen(str); n = n%len;//若n>len时,求模 char *temp; if (n>(len/2)){//此处可以变相理解为循环左移len-n个字符 ...原创 2019-04-19 10:14:04 · 552 阅读 · 0 评论 -
字符串指定位置删除指定长度的子串
int deleteChars(char *str,int pos,int len){//从字符串str的指定位置m删除指定长度为n的字符串 if (str==NULL) return 0; int strLen = strlen(str); if (len>strLen-pos+1||len<0||pos<=0){ cou...原创 2019-04-19 15:21:11 · 1759 阅读 · 0 评论 -
单链表逆置
void reverseList(LinkList *L){ LinkList p,q,r; p=*L; q=NULL; r=NULL; while (p!=NULL){ q=p; p=p->next; q->next=r; r=q; } *L=q;}原创 2019-04-24 09:33:45 · 430 阅读 · 0 评论 -
各种排序算法总结
#include<vector>#include <math.h>using namespace std;/*****************交换排序*************************///1,冒泡排序 O(n2) 稳定void bubbleSort(vector<int> *a){ int len = a->size(...原创 2019-05-02 12:07:22 · 130 阅读 · 0 评论 -
接雨水
题目给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6思路双指针夹逼首先,找到能存水的...原创 2019-08-19 16:33:56 · 119 阅读 · 0 评论