合并字符串问题

Do you know how many fools have sacrificed everything in pursuit to be a Neverdie?
As a matter of fact,it‘s much easier than people expect.If one can be an information-based lifeform,
then it can move from medium to medium without losing any integrity. That is to say,
the data that makes up one‘s soul to be a completely separate entity from the vessel that contains it, like software and hardware.
And in this way, Kong Ruili is the first human to achieve immortality, under the help of Xie Yida.
The girl didn‘t recall ever asking for anything that grand.
She just desires to be together with her brother forever--the the girl want to combining her soul with her elder brother, Kong Taoluo.
So Xie picks up the braincase and sets it on his operating table again. It’s a totally new problem for him. How to mix two souls to a new soul?
God knows. It is known for all, soul is coded in numbers and letters, so the greatest genius of the century,
Doctor Xie will solve this problem by following these steps: First, cut Kong Taoluo’s and Ruili’s soul code into some parts whose length is
L (except the last one). Then mix these parts in turn (Ruili’s first): R1K1R2K2…RMKM. As a result of heredity, their soul code is of the same length.
输入
First line contains an integer T, the number of test cases.
Each test case begins with a number L, which means the length of the parts.
The next two lines represent the details of the Ruili’s code and Taoluo’s code(length<=1000).
输出
Output the combined soul code in a line.
样例输入
1
3
WelcomeHomeKongTaoLuo
TogetherTillEndOfTime
样例输出
WelTogcometheHoerTmeKillongEndTaoOfTLuoime
实际上是将两个字符串按每隔L效交替合并

#include "stdafx.h"
#include <string>
#include <vector>
#include <iostream>
using namespace std;

int main()
{
	int count,len;
	string s1="",s2="";
	vector<char>res;//存放结果

	cin>>count;
	while(count>0)
	{
		count--;
		res.clear();
		cin>>len;
		cin>>s1;
		cin>>s2;
		//开始处理
		if(len<=0)
			continue;
		else{
			char temp;
			int times=min(s1.length(),s2.length())/len;//全整地在两个字符串中存取的次数
			for(int i=0;i<times;i++)
			{
				for(int j=0;j<len;j++)
				{

					res.push_back(s1[len*i+j]);

				}
				for(int j=0;j<len;j++)
				{

					res.push_back(s2[i*len+j]);

				}

			}
			//剩余的字符串
			int s1Len=s1.length();
			int s2Len=s2.length();
		   if(s1Len>=s2Len)//s1串长
		   {
			   if(s1Len>=(len*times+len))//最后一次在串2中取字符后把串1中剩余部分加在res里
			   {
				   for(int j=0;j<len;j++)
				   res.push_back(s1[times*len+j]);
				   for(int j=times*len;j<s2Len;j++)
					   res.push_back(s2[j]);
				   for(int j=(times+1)*len;j<s1Len;j++)
					   res.push_back(s1[j]);
			   }
			   else
			   {//最后一次时,两个串都不够len长
				   for(int j=times*len;j<s1.length();j++)
					   res.push_back(s1[j]);
				   for(int j=times*len;j<s2.length();j++)
					   res.push_back(s2[j]);
			   }
		   }
		   else//字符串2长
		   {

				   for(int j=times*len;j<s1Len;j++)
					   res.push_back(s1[j]);
				   for(int j=times*len;j<s2Len;j++)
					   res.push_back(s2[j]);

		   }

		}

		//输出结果
		int resLen=res.size();
		for(int i=0;i<resLen;i++)
		cout<<res[i];
		cout<<endl;

	}

	//system("pause");
	return 0;
}

  

时间: 2024-11-14 12:36:31

合并字符串问题的相关文章

(eden)合并字符串

题目名称 合并字符串 题目描述 合并两个字符串,每个字符串长度不小于1不超过50, 主函数已经给出,在join.h头文件中完成join函数,函数原型如下: char* join(char* a, int alength, char* b, int blength) 需要在join函数中动态申请内存,长度为a和b长度之和加1(因为字符串结尾有‘\0’); 函数返回值即所动态申请内存的首地址. 输入:两个字符串,每个一行 输出:合并后的字符串及所申请内存的实际大小,字符串一行,实际大小一行 Samp

matlab数据转换为字符串并合并字符串标注到图像曲线上

1.把数字转换为字符串 [函数描述]str=num2str(A):把数组A中元素取小数点后四位,并转换为字符串. [函数实例]把数字转换为字符串,输入语句: str1=num2str(pi) str2=num2str(eps) 输出结果: str1 =3.1416 str2 =2.2204e-016 2.字符串合并 strcat(str1,str2,-.,strn); 将str1,str2,-strn合并成为一个字符串 3.通过 gtext(str);可以把字符串标注到图像上面,注意str一定要

合并字符串

1 # -*- coding: utf-8 -*- 2 """ 3 合并字符串 4 5 涉及的函数 6 join():性能优于+操作 7 formatString % (pieces):对于少量字符串(尤其是变量中的 8 字符串),需要拼接,或者还需要加入额外的信息,该方法较好 9 %s暗中帮我们做了很多工作,如调用str方法,还能指定浮点数的 10 输出有效位数 11 +:不要用它来创建大的字符串,psyco编译器可大幅降低+=的性能损失 12 operator.add 1

关于字符串实现交叉合并字符串

交叉合并:如字符串一为:abcd  字符串二为:1234则结果为:a1b2c3d4 1 import java.util.ArrayList; 2 import java.util.List; 3 4 public class A { 5 public static void main(String[] args) { 6 String a[] ={"a","b","c"}; 7 String b[] ={"1","

《Python CookBook2》 第一章 文本 - 去字符串两端的空格 &amp;&amp; 合并字符串 &amp;&amp; 将字符串逐字符或者逐词反转

去字符串两端的空格 任务: 获得一个开头和末尾都没有多余空格的字符串. 解决方案: 字符串对象的lstrip.rstrip和strip 方法正是为这种任务而设计的.这几个方法都不需要参数,它们会直接返回一个删除了开头.末尾或者两端的空格的原字符串的拷贝. 参考代码: >>> test_string = ' test ' >>> print '|',test_string.lstrip(),'|',test_string.rstrip(),'|',test_string.

python文本 拼接或合并字符串

python文本 拼接.合并字符串 场景: 拼接.合并字符串 在这个场景中,我们首先想到的当然是使用+或者+=将两个字符串连接起来 >>> a='a'    >>> b='b'    >>> c=a+b    >>> c    'ab'    >>> 如果整个程序只有两个字符串需要拼接,那没有问题 但是如果程序里面大量存在拼接,甚至需要循环拼接,这个时候性能问题就会出现 原因:字符串是不可原地修改的,改变一个字符串就

华为训练题:初级——合并字符串

按照指定规则对输入的字符串进行处理. 详细描述: 将输入的两个字符串合并. 对合并后的字符串进行排序,要求为:下标为奇数的字符和下标为偶数的字符分别从小到大排序.这里的下标意思是字符在字符串中的位置. 对排训后的字符串进行操作,如果字符为‘0’——‘9’或者‘A’——‘F’或者‘a’——‘f’,则对他们所代表的16进制的数进行BIT倒序的操作,并转换为相应的大写字符.如字符为‘4’,为0100b,则翻转后为0010b,也就是2.转换后的字符为‘2’: 如字符为‘7’,为0111b,则翻转后为11

根据某一字段值相同合并字符串 - - SQL

做项目的过程中,遇到一个问题,相同id,不同value的记录希望合并成一条记录,value以逗号分隔,从网上搜了搜解决方案,整理如下,备忘. 一.           字符串合并 表名:test 字段: id               int name        nvarchar(50) 字段值: 期望结果: id               nameStr ----------------------------- 1                a,b,c 2            

合并字符串中连续的多个空格的C代码实现

1.问题描述 将某一字符串中连续出现的多个空格合并为一个空格,如果合并之后的字符串的首尾有空格,则将其去掉. 例如," This is a string! "是一个包含多个空格的字符串,要求其变成"This is a string!"的形式. 2.C代码实现 /********************************************************************** * 版权所有 (C)2015, Zhou Zhaoxiong. *