字符串的插入
来源:互联网 发布:卡盟域名是什么 编辑:程序博客网 时间:2024/05/22 05:22
题目描述
将一个字符串插入到另一个字符串当中。算法描述如下:
图:字符串插入算法
输入
输入包括多个测试样例,每个一行,包括两个字符串(stra,strb)和一个整数 i。字符串仅由英文大小写字母或数字组成。输入的字符串长度不超过127。
输出
将后一个字符串插入到前一个字符串的第i个字符前。输出插入后的结果后换行。
样例输入
strng i 4
样例输出
string
提示
收起提示[-]
提示: 由于HString是由字符指针和整数构成,因而其结构和操作相对比较简单。但是,对于输入,可能需要多余的操作了。首先使用C字符串来获取字符串,然后获得输入字符串的长度,然后再分配内存。分配的长度要比输入的字符串的长度大1,你知道的。同时上述算法插入时也要注意字符串结尾(上述算法需要补充)。 注意输入的字符串长度不大于127,但结果字符的字符串长度可能大于127。 总结: 通过熟悉这个算法,能够理解C语言字符串和C++中的string类的实现了。
#include<stdio.h>#include<string.h>#include<stdlib.h>#define MAXSTRLEN 255typedef struct{ char *ch; int length;}HString;void InitString(HString *P);void StrAssign(HString *P,char charc[]);int StrInsert(HString *S,HString *T,int pos);void print(HString *P);void InitString(HString *P){ P->ch='\0'; P->length=0; return ;}void StrAssign(HString *P,char charc[]){ int i,len; if(P->ch) free(P->ch); len=strlen(charc); if(!charc) { P->ch='\0'; P->length=0; } else { P->ch=(char *)malloc(len*sizeof(char)); if(!P->ch) { exit(-1); } else { for(i=0;i<len;i++) { P->ch[i]=charc[i]; } P->length=len; } } return ;}int StrInsert(HString *S,HString *T,int pos){ int i; if(pos<1||pos>S->length+1) { return 0; } S->ch=(char *)realloc(S->ch,(S->length+T->length)*sizeof(char)); if(!S->ch) { exit(-1); } for(i=S->length-1;i>=pos-1;i--) { S->ch[i+T->length]=S->ch[i]; } for(i=pos-1;i<pos-1+T->length;i++) { S->ch[i]=T->ch[i-(pos-1)]; } S->length=S->length+T->length; return 1;}void print(HString *P){ int i; for(i=0;i<P->length;i++) { printf("%c",P->ch[i]); } printf("\n"); return ;}int main(){ int pos; HString S,T; char chara[MAXSTRLEN]; char charb[MAXSTRLEN]; while(scanf("%s%s%d",chara,charb,&pos)!=EOF) { InitString(&S); InitString(&T); StrAssign(&S,chara); StrAssign(&T,charb); StrInsert(&S,&T,pos); print(&S); } return 0;}
阅读全文
0 0
- Less 字符串的插入
- 字符串的插入
- 字符串的插入
- 字符串子串的插入
- 第八节 字符串的插入
- 字符串插入的简单实现
- 字符串中,插入字符串统计的个数
- 插入字符串
- 字符串插入
- 字符串插入
- 字符串插入
- 字符串插入
- 字符串插入
- 字符串插入
- 字符串插入
- 在指定的位置后插入字符串
- sql2005如何插入帶引號的字符串
- 字符串的删除,插入,取串
- 51Nod1040 最大公约数之和 欧拉函数
- centos7卸载自带的openjdk安装oracle jdk
- 字蛛的使用
- 泛函编程(17)-泛函状态-State In Action
- 【思路题】BZOJ4721 [NOIP2016]蚯蚓
- 字符串的插入
- JSP框架Tiles,好东西。
- 二叉树的遍历
- 泛函编程(16)-泛函状态-Functional State
- AJAX 状态值(readyState)与状态码(status)详解
- 机房重构——数据库设计
- 泛函编程(15)-泛函状态-随意数产生器
- 01背包1001
- Pearls in a Row CodeForces