1349 - 算法4-4:字符串插入

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB
将一个字符串插入到另一个字符串当中。算法描述如下:

<span style="font-size:10.5pt;">图:字符串插入算法</span>

题目输入

输入只有一行,两个字符串(stra,strb)和一个整数 i。字符串仅由英文大小写字母或数字组成。输入的字符串长度不超过127。

题目输出

将后一个字符串插入到前一个字符串的第i个字符前。输出插入后的结果。

输入/输出样例

输入格式

strng i 4

输出格式

string

C语言解答

#include <stdio.h>
#include <string.h>

void insert (char *s,  char  *t,  int i)
{
	char string[300],  *temp =string;
	
	if  (!strlen (s))
		strcpy (s,  t);
	else   if (strlen (t))  {
		strncpy (temp, s, i);
		strcat (temp, t) ;
		strcat (temp,  (s + i ));
		strcpy (s, temp );
	}
}
int main ()
{
	char s[128];
	char t[128];
  int i;
  scanf("%s %s %d",s,t,&i);
	insert(s,t,i-1);
	printf("%s",s);
	printf ("\n");
}

C++解答

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef int Status;
#define ERROR 0
#define OK 1
typedef struct {
	char * ch;		// 若是非空串,则按串长分配存储区,否则 ch 为 NULL
	int length;		// 串长度
}HString;

void ScanHString(HString& str){
	// 读取HString类字符串
	char chrstr[128];
	scanf("%s", chrstr);	//读取一个C字符串
	str.length = strlen(chrstr);	// 获得该字符串的长度
	str.ch = (char *)malloc((str.length+1)*sizeof(char));	// 分配内存
	strcpy(str.ch, chrstr);	// 将字符串从C字符串拷贝到HString中
}

void PrintHString(HString str){
	// 输出HString字符串
	printf("%s", str.ch);
}

Status StrInsert(HString &S, int pos, HString T) {  // 算法4.4
   // 1≤pos≤StrLength(S)+1。在串S的第pos个字符之前插入串T。
   int i;
   if (pos < 1 || pos > S.length+1)  // pos不合法
      return ERROR;
   if (T.length) {    // T非空,则重新分配空间,插入T
      if (!(S.ch = (char *)realloc(S.ch,(S.length+T.length+1)*sizeof(char))))
         return ERROR;
      for (i=S.length-1; i>=pos-1; --i)  // 为插入T而腾出位置
         S.ch[i+T.length] = S.ch[i];
      for (i=0; i<T.length; i++)         // 插入T
         S.ch[pos-1+i] = T.ch[i];
      S.length += T.length;
   }
   S.ch[S.length] = '\0';		// 注意字符结尾
   return OK;
} // StrInsert

int main(){
	HString stra, strb;		// 定义两个字符串
	int pos;				// 定义插入的位置
	ScanHString(stra);		// 读取字符串
	ScanHString(strb);
	scanf("%d", &pos);		// 读取位置
	StrInsert(stra, pos, strb);	// 字符串插入
	PrintHString(stra);		// 输出结果

	return 0;
}

Java解答



import java.util.Scanner;

public class Main{
   public static void main(String[] args) {
	 Scanner s = new Scanner(System.in) ;
		 String str1 = s.next() ;
		 String str2 = s.next() ;
		 
		 int i = s.nextInt() ;
		 StringBuilder sb = new StringBuilder() ;
		 
		 sb.append(str1).insert(i-1, str2) ;
		 System.out.println(sb);
   }  
}