问题描述
FJ在沙盘上写了这样一些字符串:
A1 = “A”
A2 = “ABA”
A3 = “ABACABA”
A4 = “ABACABADABACABA”
… …
你能找出其中的规律并写所有的数列AN吗?
输入格式
仅有一个数:N ≤ 26。
输出格式
请输出相应的字符串AN,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。
样例输入
3
样例输出
ABACABA
Java代码:
import java.util.*;
public class Main {
public static String solve(int m,int n,String a){//尾递归
if(m==n)
return a;//原字符串
else{
char b=(char)(65+m);//新增字符
String c=new StringBuffer(a).reverse().toString();//反转字符串
a=a+b+c;
return solve(m+1,n,a);
}
}
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n=in.nextInt();
System.out.println(solve(1,n,"A"));
}
}
以上的做法太复杂,其实可以直接这样写:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n=in.nextInt();
String s="";
for(int i=1;i<=n;i++){
s=s+(char)(64+i)+s;
}
System.out.println(s);
}
}
Python代码:
import sys
import numpy as np
n=int(input())
if n==1:
print("A")
sys.exit()
res="A"
x=ord(res) # 字符转数字
for i in range(n-1):
x+=1
res=res+chr(x)+res
print(res)
新的知识点:
反转一个已有字符串a并存到字符串b中:
String b=new StringBuffer(a).reverse().toString();