
编程之法
文章平均质量分 86
qibofang
这个作者很懒,什么都没留下…
展开
-
《编程之法》1.1字符串的旋转
题目描述:书中的字符串的旋转其实是指字符串的循环移动,如将字符串abcdef向右移动四个字符,变成cdefab解法一:直接输出对于字符串abcdef,输出向右移动四个字符后的目的字符串,即依次输出c,d,e,f,a,b,若想直接输出,这意味着遍历原字符串的下标0时,输出原字符串中下标为2的字符c;遍历原字符串下标1时,输出原字符串下标为3的字符d......若字符串长为n,原创 2016-07-14 20:23:47 · 1240 阅读 · 0 评论 -
《编程之法》1.2字符串的包含
题目描述:字符串的包含:给定长字符串A和短字符串B,判断B的字符是否全部包含在A中(若字符串中字符重复,只考虑一次该字符,如asdff包含ffff)。如给定A:asdffds,若B为:asddf,输出true;若B为:abds,输出false。解法一: 蛮力轮询轮询B中每个字符c,然后用该字符c去依次比较A中的每一个字符,最后看是否B中的字符都在A中。若A,B字符串的串长分别为n和m,则时原创 2016-07-14 20:53:38 · 962 阅读 · 0 评论 -
《编程之法》1.3字符串的全排列,组合,重复排列,八皇后问题
题目描述:输入一个字符串,打印出该字符串中字符的所有排列,例如输入"abc",输出"abc","acb","bac","bca","cab","cba"解法一:递归实现类似于图的深度遍历搜索求全路径的算法,每次交换两个数,并输出,按照递归的方法,如求abcd的全排序,1:先求abcd后面的bcd全排列(同样先求b后面cd的全排列,然后b与后面的元素依次交换);2:求ab交换后的bacd后面原创 2016-07-15 19:24:19 · 2870 阅读 · 0 评论 -
《编程之法》1.4字符串转换成整数
题目描述:输入一个由数字组成的字符串,请把它转换成整数输出分析:int型整数的范围为:-2147483648~+2147483647,这意味着字符串输入太长会没办法正常显示数字,故当转换后的数大于最大正数时,我们显示2147483647;当转换后的数小于最小负数时,我们显示-2147483648。同时需要考虑字符串中含有非数字字符,以及字符串前有空格等情况,如" 123t444",这时我原创 2016-07-16 13:38:11 · 2281 阅读 · 0 评论 -
《编程之法》1.5回文判断
题目描述:给定一个字符串,判断该字符串是否为回文字符串,是则返回true,否则返回false。所谓回文串是指字符串从前往后读,以及从后往前读,结果一致,如:madam, 12344321等解法1:从两头往中间扫,定义两个指针,分别指向字符串的头和尾,并分别向前和向后移动,依次判断对应元素是否都相同。时间复杂度为O(n),空间复杂度为O(1)。#include #include us原创 2016-07-16 16:02:38 · 853 阅读 · 0 评论 -
《编程之法》1.6最长回文子串
题目描述:给定一个字符串,求它的最长回文子串(子串是连续的)的长度解法一:枚举法外面的双层for循环确定连续子串头尾,加上里面的一个for循环来判断该子串是否为回文串,此外用一个max变量(初始值为1)动态更新保存最长子回文串的长度,时间复杂度为O(n^3),空间复杂度为O(1)。#include #include using namespace std;bool IsPal原创 2016-07-17 15:31:48 · 1269 阅读 · 0 评论 -
寻找数组中第k小的数:平均情况下时间复杂度为O(n)的快速选择算法
又叫线性选择算法,这是一种平均情况下时间复杂度为O(n)的快速选择算法,用到的是快速排序中的第一步,将第一个数作为中枢,使大于它的所有数放到它右边,小于它的所有数放到它左边。下面是具体的算法步骤:1,选择中枢:如下,为了提高快速选择的效率,最好尽可能的选择数值居中的数作为中枢。如1 7 2 8 4 3,则取头尾以及中间位置,然后选择(1, 2, 3)中的2int median3(int原创 2016-07-19 10:25:22 · 5621 阅读 · 0 评论 -
《编程之法》2.1寻找最小的k个数
题目描述:数组里面有n个整数,请找出其中最小的k个数,要求时间复杂度尽可能低。解法一:全部排序:先对这个序列快速排序,再输出前k个元素。时间复杂度为O(nlogn)+O(k);#include #include using namespace std;void SortFindK(int *nums, int k){ sort(nums, nums+100); int原创 2016-07-19 13:04:07 · 998 阅读 · 0 评论 -
《编程之法》2.2寻找和为定值的两个数
题目描述:输入一个整数数组和一个整数,在数组中查找一对数,满足它们的和正好等于输入的那个整数,并输出任一一对值。解法一:直接穷举:双层循环,复杂度为O(n^2);#include using namespace std;void DirectEnum(int nums[], int n, int len){ int i, j, flag = 0; for(i = 0; i原创 2016-07-20 20:02:31 · 853 阅读 · 0 评论