https://www.luogu.com.cn/problem/UVA536
C语言:
字符串截取:strncpy(s1, s2 + i, j):从s2的第 i+1 位开始截取 j 位,赋给s1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void PostOrder(char s1[100], char s2[100], int len)
{
int i;
char s11[100], s12[100], s21[100], s22[100];
if (len==1)
{
printf("%c", s1[0]);
return;
}
else if (len==0)
return;
for (i=0; i<len; i++)
{
if (s1[0] == s2[i])
{
if (i != 0)
{
strncpy(s11, s1 + 1, i);
strncpy(s21, s2, i);
s11[i] = '\0';
s21[i] = '\0';
}
if (i != len - 1)
{
strncpy(s12, s1 + i + 1, len - i - 1);
strncpy(s22, s2 + i + 1, len - i - 1);
s12[len - i - 1] = '\0';
s22[len - i - 1] = '\0';
}
//printf("%s %s %s %s\n", s11, s12, s21, s22);
PostOrder(s11, s21, i);
PostOrder(s12, s22, len - i - 1);
break;
}
}
printf("%c",s1[0]);
}
int main()
{
int i;
char s1[100], s2[100];
while (scanf("%s%s", s1, s2))
{
PostOrder(s1, s2, strlen(s1));
printf("\n");
}
return 0;
}
Python:
输入:
s = input()
s1, s2 = s.split(' ')
字符串截取:s[i,len]:从第i位(i>=0)开始到 len - 1 截取
代码:
def PostOrder(s1, s2, len1):
if (len1 == 1):
print(s1[0], end = '')
return
for i in range(len1):
if s1[0] == s2[i]:
if i != 0:
PostOrder(s1[1: i + 1], s2[0: i], i)
if i != len1 - 1:
PostOrder(s1[i + 1: len1], s2[i + 1: len1], len1 - i - 1)
break
print(s1[0], end = '')
s = input()
s1, s2 = s.split(' ')
#print(s1[1:4], s2)
PostOrder(s1, s2, len(s1))