题意:设有两个串A和B,现将B反转,再用插入的形式合成一个串。如:A:abc B:efg;反转B先,变gfe;作插入,agbfce。现在给出一个串,要求还原出A和B。
思路:扫一遍O(n),串A在扫的时候直接输出,串2在扫的时候反向存储,再输出。
1 #include <iostream> 2 #include <cmath> 3 #include <cstdio> 4 #include <cstring> 5 using namespace std; 6 const int N=105; 7 char str[N]; 8 char s2[N]; 9 10 void cal(int len) 11 { 12 int j=0; 13 for(int i=0,p=len-1; i<len; i+=2) 14 { 15 printf("%c",str[i]);//直接输 16 s2[j++]=str[p];//存起来再输 17 p-=2; 18 } 19 s2[j]=‘\0‘; 20 printf("\n%s\n",s2); 21 } 22 23 int main() 24 { 25 //freopen("input.txt", "r", stdin); 26 int t; 27 cin>>t; 28 while(t--) 29 { 30 scanf("%s",str); 31 cal(strlen(str)); 32 } 33 return 0; 34 }
AC代码
时间: 2024-10-18 10:00:51