zis病毒DNA可以表示成由一些字母组成的字符串序列,且病毒的DNA序列是环状的。例如,假设病毒的DNA序列为baa,则该病毒的DNA序列有三种变种:baa,aab,aba。试编写一程序,对给定的病毒DNA序列,输出该病毒所有可能的DNA序列(假设变种不会重复)。
输入格式:
输入第一行中给出1个整数i(1≤i≤11),表示待检测的病毒DNA。 输入i行串序列,每行一个字符串,代表病毒的DNA序列,病毒的DNA序列长度不超过500。
输出格式:
依次逐行输出每个病毒DNA所有变种,各变种之间用空格分隔。
输入样例1:
1
baa
输出样例1:
baa aab aba
输入样例2:
2
abc
baac
思路:如abc
将a的首字母放到末尾变成bca,这是一种可能的序列再把b放到末尾变成cab这也是种可能,再加上原本的序列一共三种,思路就是这样,不管序列是abcd还abbc都是这样的思路把首字母放到末尾输出。
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
String s2=sc.nextLine();//吞换行符号
char a[]=new char[509];//字符数不超过500
for(int i=0;i<n;i++)
{
String s=sc.nextLine();
int len=s.length();//字符长度
stoarrays(s,a,len);//字符装入数组
System.out.print(s+" ");//输出原字符
prints(a,len);//输出函数
System.out.println();
}
}
public static void prints(char a[],int len )
{ //abc->bca->cab//以上是所有可能,输出想表示就是这个意思
int j=1;
for(int i=1;i<len;i++) {
a[len]=a[0];//第一个字符放到最后
for( j=1;j<=len;j++)
{
a[j-1]=a[j];//依次将字符往前移动
}
a[j-1]=' ';//最后一个变成空格
String s=new String(a).trim();//将a变成串,并除去末尾空格
System.out.print(s+" ");
}
}
public static void stoarrays(String s,char a[],int len)
{
for(int i=0;i<len;i++)
{
a[i]=s.charAt(i);
}
}
}