string
“码”不停蹄
爱,就码上行动
展开
-
不使用C/C++库函数,实现strtok功能
使用C语言,编写函数,要求不适用C/C++库函数,实现strtok函数功能。思路:Linux函数原型:char *strtok(char *str, const char *delim); 返回分隔符pSubStr之前的字符串。#include <stdlib.h>#include <stdio.h>#include <string.h>#include <assert.h>//char *strtok(char *str, const c原创 2021-07-25 19:25:01 · 137 阅读 · 0 评论 -
不使用C/C++库函数,实现strstr函数功能
使用C语言,编写程序,不使用C/C++库函数,实现strstr函数功能。思路:Linux函数原型:char *strstr(const char *haystack, const char *needle);如:haystack="abcdefghij",needle="cde",函数返回cdefghij。#include <stdlib.h>#include <stdio.h>#include <string.h>#include <assert.原创 2021-07-25 17:28:14 · 903 阅读 · 0 评论 -
不适用C/C++库函数,实现strcpy函数功能
思路:函数原型strcpy(char *str1, char *str2),将str2赋值给str1,返回str1指针。#include <stdlib.h>#include <stdio.h>#include <string.h>#include <assert.h>char* mystrcpy(char *pStr1, char *pStr2) { if (pStr1 == NULL || pStr2 == NULL) {原创 2021-07-25 16:53:36 · 290 阅读 · 0 评论 -
不适用C/C++库函数,实现strcmp函数功能
使用C语言,编写程序,实现strcmp功能。思路:将两个字符串从头开始比较,退出循环比较条件:(1)遇到字符串'\0'就退出比较,(2)遇到两个字符串字符不相等。退出循环比较后,比较当前的字符ACSSII码,*str1> *str2, return 1;*str1 < *str2, return -1;*str1 == *str2, return 0。// 不使用c库函数实现strcmp函数,str1> str2, return 1, str1 < str2, retu..原创 2021-07-25 16:06:54 · 702 阅读 · 0 评论 -
字符串内容重排
使用C语言,编写函数,实现对给定的字符串(包含英文字母、数字、符号)的处理,经处理的字符串按照字母、数字、符号的顺序排放,顺序不变。思路1:先统计字母、数字、符号的个数,假设分别为a,b,c,字符串总长度是d,那么字母下标分布应该是:[0, a-1],数字下标分布应该是:[a, a+ b- 1],符号下标分布应该是:[a+ b, d - 1]。定义一个临时空间,拷贝原字符串到这个临时空间,然后遍历临时空间,按照下标分布赋值到源字符串对应位置。这个方法较容易理解和实现。#include <st原创 2021-07-24 23:26:34 · 830 阅读 · 0 评论 -
查找两个字符串中的最大公共字串
使用C语言,编写函数,查找两个字符串中最大公共字串,如:字符串A="abcdefg",字符串B="cdeab",做大公共字串为“cde”。思路:先确定短的字符串short_str和长的字符串long_str,用short_str在long_str中匹配,如果没匹配到,将short_str最后一个字符置'\0',再去匹配,直到匹配到了返回字符串指针。#include <stdlib.h>#include <stdio.h>#include <string.h>原创 2021-07-23 22:31:11 · 895 阅读 · 1 评论 -
在字符串中删除指定的特定字符
使用C语言,编写一个尽可能高效的函数,删除字符串中特定字符。思路:要求尽可能高效,定义一个256的int数组,将需要删除的字符ASCII作为数组下标,要删除的置1,注意点:处理后的字符串要加'\0'。#include <stdlib.h>#include <stdio.h>#include <string.h>int del_specific_char(char szStr[], const char szMvChar[]){ //ASCII范原创 2021-07-23 11:51:30 · 4057 阅读 · 0 评论 -
找出0/1字符串中0和1连续出现的最大次数
使用C语言,编写函数,找出找出0/1字符串中0和1连续出现的最大次数,如110000111111000111111111,0连续出现的最大次数是4,1连续出现的最大次数是9。思路:定义两个临时变量,tmpmax0和tmpmax1,表示每次连续统计的个数;定义一个标识,表示当前统计的是0还是1,如果遇到0和1统计的转折点,记录转折前的连续统计最大个数,并将转折之前的临时值置0;当最后一段字符走不到转折点,需要在遍历完字符串之后比较并获取连续出现的最大统计值。#include <stdlib.h原创 2021-07-22 21:38:08 · 459 阅读 · 0 评论 -
从字符串指定位置删除指定长度字串
使用C语言编写函数,从字符串指定位置开始删除指定长度字串,如:“abcdefg”,从第3位开始删除3个字符,输出为:“abfg”。思路:删除的起始数组下标为:nPos -1,跳过删除字串,下一个字符数组下标:nPos + n - 1,将nPos + n - 1位置开始的字符往nPos -1处赋值,下标+1,循环操作,直到遇到字符串结束符,注意:针对新的字符串最后一位加上'\0'。#include <stdlib.h>#include <stdio.h>#include原创 2021-07-21 22:14:45 · 1793 阅读 · 0 评论 -
字符串循环右移n个字符
使用C语言编写函数,将字符串循环右移n个字符,例如:abcdefg,循环右移3位,efgabcd。第一次看到这个题意时,发现如果n大于等于字符串长度应该怎么处理并不明确,并且也没有限制不能使用库函数,所以个人理解如下,如有不对,希望大家批评指正。#include <stdlib.h>#include <stdio.h>#include <string.h>void MoveRight(char *pStr, int n){ if (pStr ==原创 2021-07-20 22:23:28 · 1487 阅读 · 0 评论 -
字符串翻转
编写一个函数,将字符串string中的单词位置倒置,如:“I am a student”,倒置后是 “student a am I”。单词内部结构不变。解题思路:先将整个字符串倒置,再将每个单词倒置回来。void turn_over_str(char *str, int begin, int end){ while (begin < end) { char tmp = str[begin]; str[begin] = str[end];原创 2021-07-19 22:25:05 · 80 阅读 · 0 评论