随笔分类 -  字符串系列

摘要://函数将句子中的每个单词的首字母改为大写string first_letter(string& sentence){ //定义string 指针,并指向string 首地址 string::iterator it=sentence.begin (); //定义 关键 标志,反映检测到空格字符 bool space_flag=true; //string 指针未到字符串尾,程序循环。 while(it!=sentence.end()) { //第一次循环指针指向单词首字母,space_flag=true。 ... 阅读全文
posted @ 2013-09-16 22:41 一枚程序员 阅读(1941) 评论(0) 推荐(0) 编辑
摘要:问题:许多程序会大量使用字符串。对于不同的字符串,我们希望能够有办法判断其相似程度。我们定义了一套操作方法来把两个不相同的字符串变得相同,具体的操作方法为:1.修改一个字符(如把“a”替换为“b”)。2.增加一个字符(如把“abdd”变为“aebdd”)。3.删除一个字符(如把“travelling”变为“traveling”)。比如,对于“abcdefg”和“abcdef”两个字符串来说,我们认为可以通过增加/减少一个“g“的方式来达到目的。上面的两种方案,都仅需要一次操作。把这个操作所需要的次数定义为两个字符串的距离,给定任意两个字符串,你是否能写出一个算法来计算出它们的距离?分析与解法不 阅读全文
posted @ 2013-08-20 21:08 一枚程序员 阅读(1415) 评论(0) 推荐(0) 编辑
摘要:问题:给定两个字符串s1和s2,要求判断s2是否能够被通过s1做循环移位(rotate)得到的字符串包含。例如,S1=AABCD和s2=CDAA,返回true;给定s1=ABCD和s2=ACBD,返回false。解法一:从题目中可以看出,我们可以使用最直接的方法对S1进行循环移动,再进行字符串包含的判断,从而遍历其所有的可能性。字符串循环移动,时间复杂度为O(n),字符串包含判断,采用普通的方法,时间复杂度为O(n*m),总体复杂度为O(n*n*m)。字符串包含判断,若采用KMP算法,时间复杂度为O(n),这样总体的复杂度为O(n*n)。若字符串的长度n较大,显然效率比较低。其中n为S1的长度 阅读全文
posted @ 2013-08-20 16:54 一枚程序员 阅读(5556) 评论(0) 推荐(1) 编辑
摘要:全排列在笔试面试中很热门,因为它难度适中,既可以考察递归实现,又能进一步考察非递归的实现,便于区分出考生的水平。所以在百度和迅雷的校园招聘中都会考到。。首先来看看题目是如何要求的(百度迅雷校招笔试题)。题目:用C++写一个函数, 如 Foo(const char *str), 打印出 str 的全排列,如 abc 的全排列: abc, acb, bca, dac, cab, cba。。一、全排列的递归实现为方便起见,用123来示例下。123的全排列有123、132、213、231、312、321这六种。首先考虑213和321这二个数是如何得出的。显然这二个都是123中的1与后面两数交换得到的。 阅读全文
posted @ 2013-08-17 17:30 一枚程序员 阅读(19440) 评论(0) 推荐(3) 编辑
摘要:函数头://pStr 是指向以'\0'结尾的字符串指针//steps 是要求移动的步数void LoopMove(char *pStr, int steps){ //......}使用库函数实现:方法一:#define MAX_LEN 1000void LoopMove(char *pStr, int steps){ int n=strlen(pStr)-steps; char tmp[MAX_LEN]; strcpy(tmp,pStr+n); strcpy(tmp+seps,pStr); *(tmp+strlen(pStr))='\0'; ... 阅读全文
posted @ 2013-06-20 10:01 一枚程序员 阅读(519) 评论(0) 推荐(0) 编辑
摘要:函数原型: int atoi(const char *nptr);函数说明: 参数nptr字符串,如果第一个非空格字符存在,并且,如果不是数字也不是正负号则返回零,否则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。代码:#include<stdio.h>#include<stdlib.h>#include <cctype>int my_atoi(const char* p){ if(p==NULL) return 0; bool neg_flag = false; // 符号标记 int res = 0; // 结果 .. 阅读全文
posted @ 2013-06-20 09:33 一枚程序员 阅读(515) 评论(0) 推荐(0) 编辑
摘要:函数原型:char *itoa( int value, char *string,int radix);原型说明:value:欲转换的数据。string:目标字符串的地址。radix:转换后的进制数,可以是10进制、16进制等。功 能:把一个整数转换为字符串分析:整数转化为字符串,可以采用加‘0’,再逆序的办法,整数加'0'会隐式转化为char类型的数。代码如下:#include<stdio.h>#include<stdlib.h>int main(){ int num=12345; int i=0,j=0; char tmp[7],str[7]; wh 阅读全文
posted @ 2013-06-20 09:14 一枚程序员 阅读(933) 评论(0) 推荐(0) 编辑
摘要:/**原型:extern char *strcpy(char *dest,const char *src);*用法:#include <string.h>*功能:把src所指由NULL结束的字符串复制到dest所指的数组中。*说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。*返回指向dest的指针。*编程实现strcpy*/#include<cstdio>#include<cassert>char * _strcpy(char * dest,const char * src){ if((dest != NULL)| 阅读全文
posted @ 2013-04-25 10:58 一枚程序员 阅读(300) 评论(0) 推荐(0) 编辑
摘要:atoi()函数原型:int atoi(const char *nptr) 用法:#include <stdlib.h> 功能:将字符串转换成整型数;atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负号才开始做转换,而再遇到非数字或字符串时('\0')才结束转化,并将结果返回。 说明:atoi()函数返回转换后的整型数。用法如下:#include<stdio.h> #include<stdlib.h> int main() { char a[] = "-100"; char b[] = " 阅读全文
posted @ 2013-04-23 16:22 一枚程序员 阅读(1643) 评论(0) 推荐(1) 编辑
摘要:/**原型:int strcmp(const char *s1, const char * s2, size_t n);*用法:#include <string.h>*功能:比较字符串s1和s2的前n个字符。*说明:* 当s1<s2时,返回值<0* 当s1=s2时,返回值=0* 当s1>s2时,返回值>0*编程实现strncmp*/#include <cstdio>#include <cassert>int _strncmp(const char *s, const char *t, int count){ assert((s != 阅读全文
posted @ 2013-03-20 22:25 一枚程序员 阅读(670) 评论(0) 推荐(0) 编辑
摘要:/**原型:char *strcat(char *dest,const char *src);*用法:#include <string.h>*功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。*说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。* 返回指向dest的指针。*编程实现strcat*/#include <cstdio>#include <cassert>char * _strcat(char * dest,const char * 阅读全文
posted @ 2013-03-20 22:19 一枚程序员 阅读(374) 评论(0) 推荐(0) 编辑
摘要:/**原型:char *strncat(char *dest, const char *src, size_t n);*用法:#include <string.h>*功能:把src所指字符串的前n个字符添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。*说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。* 返回指向dest的指针。*编程实现strncat*/#include <cstdio>#include <cassert>char * _strncat(char 阅读全文
posted @ 2013-03-20 22:15 一枚程序员 阅读(643) 评论(0) 推荐(0) 编辑
摘要:/**原型:int strcmp(const char *s1,const char * s2);*用法:#include <string.h>*功能:比较字符串s1和s2。*说明:* 当s1<s2时,返回值<0* 当s1=s2时,返回值=0* 当s1>s2时,返回值>0*编程实现strcmp*/#include <cstdio>#include <cassert>int _strcmp(const char * s,const char * t){ assert((s != NULL)&&(t != NULL)); 阅读全文
posted @ 2013-03-20 22:03 一枚程序员 阅读(434) 评论(0) 推荐(0) 编辑
摘要:/**原型:char *strrchr(const char *s,int ch);*用法:#include <string.h>*功能:查找字符串s中第一次出现字符c的位置*说明:返回最后一次出现c的位置的指针,如果s中不存在c则返回NULL。*编程实现strrchr*/#include <cstdio>#include <cassert>char * _strrchr(const char * str, int ch){ assert(str != NULL); for( ; *str != (char)ch; str++) if(*str ==  阅读全文
posted @ 2013-03-20 21:53 一枚程序员 阅读(531) 评论(0) 推荐(0) 编辑
摘要:/**原型:extern char *strncpy(char *dest, const char *src, int n);*用法:#include <string.h>*功能:把src所指由NULL结束的字符串的前n个字节复制到dest所指的数组中。*说明:* 如果src的前n个字节不含NULL字符,则结果不会以NULL字符结束。* 如果src的长度小于n个字节,则以NULL填充dest直到复制完n个字节。* src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。* 返回指向dest的指针。*编程实现strncpy*/#include <c 阅读全文
posted @ 2013-03-20 21:45 一枚程序员 阅读(586) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示