
【程序员编程艺术】学习记录
文章平均质量分 64
Voidwalkerxiaohui
西安电子科技大学CS硕士在读关注图像处理算法研究字典学习人工智能数学等学科研究方向希望结识更多同道中人
展开
-
【程序员编程艺术】学习记录1:左旋转字符串之指针翻转法
【程序员编程艺术】学习记录1:左旋转字符串之指针翻转法题目:左旋转字符串定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部,如把字符串abcdef左旋转2位得到字符串cdefab。请实现字符串左旋转的函数,要求对长度为n的字符串操作的时间复杂度为O(n),空间复杂度为O(n)思路一、暴力移位法//暴力移位法void leftshiftone(char *s,原创 2014-07-17 10:04:13 · 1066 阅读 · 0 评论 -
C/C++数据类型的转换
C/C++数据类型的转换1、字符串->整数型(atoi)头文件:stdlib.h原型:int atoi(const char *str)说明: atoi()会扫描参数str字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。2、字符串->浮点型(atof)头文件:math.h或者stdlib.原创 2014-08-09 02:10:52 · 784 阅读 · 0 评论 -
double型转换成string型
double型转换成string型题目描述:如有一个函数,其可接受一个long double参数,并将参数转换为字符串,结果字符串应保留两位小数,例如,浮点值123.45678应该生成“123.45”这样的字符串。表面上看来 这是一个意义不大的编程问题,然而,如果真要在实际中派上用场,函数应设计为具有一定弹性,以允许调用者指定小数位数。另外,函数也应该能够处理各种异常 情况,如像123原创 2014-08-09 02:05:34 · 7433 阅读 · 0 评论 -
字符串包含
字符串包含题目:假设这有一个各种字母组成的字符串A,和另外一个字符串B,字符串里B的字母数相对少一些。什么方法能最快的查出所有小字符串B 里的字母在大字符串A里都有?a是长字符串,b是短字符串方法一:双循环比较法(轮询法)针对b中的每一个字符,逐个与a中每一个字符比较伪代码:bool StringContain(string &a, string &b){原创 2014-08-09 01:56:57 · 1181 阅读 · 0 评论 -
变位词
题目描述:如果两个字符串的字符一样,但是顺序不一样,被认为是兄弟字符串,比如bad和adb即为兄弟字符串,现提供一个字符串,如何在字典中迅速找到它的兄弟字符串,请描述数据结构和查询过程。思路一:用计数排序设计一个数组,对单词每个字母计数加1,对兄弟单词每个字母计数减去1,如果最后这个数组的计数是0,那么就为兄弟单词bool isBrotherWord(string &str1, s原创 2014-08-09 01:58:00 · 1922 阅读 · 0 评论 -
字符串转换为整数”123“->123
字符串转换为整数”123“->123题目描述:输入一个由数字组成的字符串,把它转换成整数并输出。例如:输入字符串"123",输出整数123。给定函数原型 int StrToInt(const char *str) ,实现字符串转换成整数的功能,不能使用库函数atoi。题目分析:将字符串正确转化为整数步骤①当扫描第一个字符‘1’时候,由于为第一位,所以直接得到数字1②原创 2014-08-09 02:01:25 · 7756 阅读 · 1 评论 -
链表翻转
链表翻转题目:链表翻转。给出一个链表和一个数k,比如链表1→2→3→4→5→6,k=2,则翻转后2→1→6→5→4→3,若k=3,翻转后3→2→1→6→5→4,若k=4,翻转后4→3→2→1→6→5,用程序实现。题目分析:我们可以采用三步反转法。参考代码#include using namespace std;const int maxn = 6;void Rev原创 2014-08-06 09:33:04 · 654 阅读 · 0 评论 -
寻找最小的k个数
题目:输入n个整数,输出其中最小的k个思路一、快速排序+遍历先对n个整数快速排序,平均所费的时间为nlogn,之后再遍历序列中前k个元素的输出(总的时间复杂度为O(nlogn+k) = O(nlogn))思路二、选择排序+遍历1、遍历n个数,把最先遍历到的k个数存入到大小为k的数组中,假设它们即使最小的k个数;2、对这k个数利用交换排序找出这k个元素中的最大值kmax,原创 2014-08-06 09:16:23 · 831 阅读 · 0 评论 -
单词翻转
单词翻转题目描述:单词翻转。输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变,句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如输入“I am a student.”,则输出“student. a am I”。题目分析:采用翻转法,先将全部字符串翻转,再将字符串中每个单词翻转。或者顺序反过来,但是不影响时间复杂度和空间复杂度。原创 2014-08-06 09:33:02 · 1204 阅读 · 0 评论 -
取数组/序列之和k最小
题目1:谷歌面试题——输入是两个整数数组,他们任意两个数的和又可以组成一个数组,求这个和中前k个数怎么取?分析:“假设两个整数数组为A和B,各有N个元素,任意两个数的和组成的数组C有N^2个元素。那么可以把这些和看成N个有序数列:A[1]+B[1] A[2]+B[1] …A[N]+B[1] 问题转变成,在这N^2个有序数列里,找到前k小的元素”题目2:有两个序列原创 2014-08-06 09:22:01 · 1041 阅读 · 0 评论 -
abcdef->cdefab(字符串旋转)
题目:左旋转字符串定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部,如把字符串abcdef左旋转2位得到字符串cdefab。请实现字符串左旋转的函数,要求对长度为n的字符串操作的时间复杂度为O(n),空间复杂度为O(n)思路一、暴力移位法核心思想:就是把需要移动的字符一步步移动到字符串的尾部//暴力移位法void leftshiftone(char *s, int原创 2014-08-05 11:18:35 · 1866 阅读 · 0 评论 -
【程序员编程艺术】学习记录3:字符串包含问题
【程序员编程艺术】学习记录3:字符串包含问题题目:假设这有一个各种字母组成的字符串A,和另外一个字符串B,字符串里B的字母数相对少一些。什么方法能最快的查出所有小字符串B 里的字母在大字符串A里都有?方法一:双循环比较法(轮询法)伪代码:for(i = 0; i length(); i++){ for(j = 0; j length(); j++) {原创 2014-07-26 11:48:10 · 908 阅读 · 0 评论 -
【程序员编程艺术】学习记录2:左旋转字符串之循环移位法
【程序员编程艺术】学习记录2:左旋转字符串之循环移位法GCD算法:(辗转相除法/欧几里得算法)gcd是求最大公约数的算法,作为TAOCP第一个算法gcd算法流程:首先给定两个整数m,n(m大于等于n)如果小于则直接交换再处理①求余数 r=m%n②假如r=0,算法结束,n即为所求否则,重新令m STL中rotate算法:对于数组移位问题,可以采用下面方法:原创 2014-07-17 12:24:04 · 1144 阅读 · 0 评论 -
C/C++字符函数
C/C++字符函数1、 判断字符c是否为字母或数字原型:extern int isalnum(int c);用法:#include 说明:当c为数字0-9或字母a-z及A-Z时,返回非零值,否则返回零。2、判断字符c是否为英文字母原型:extern int isalpha(int c);用法:#include 说明:当c为英文字母a-z或A-Z时,返回非零值,否原创 2014-08-09 02:18:55 · 973 阅读 · 1 评论