package demo1; import java.util.Scanner; /** * 字典序的最小的问题 * 给定长度为N的字符串s,要构造一个长度为N的字符串T,开始T是一个空的字符串,随后反复进行下列的操作 * * 从S的头部删除一个字符,添加到T的尾部 * 从S的尾部删除一个字符,添加到T的尾部 * 不论顺序的执行上述的操作。 * 构造一个尽量小的字符串。 * * * * @author Administrator * */ public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); int N = input.nextInt(); StringBuffer sb = new StringBuffer(); String str = ""; String T= ""; for (int i = 0;i<N;i++){ str = (sb.append(input.next())).toString(); } //把字符串转化成数组 char [] cs = str.toCharArray(); int a= 0;//表示的是下标 int b = N-1;//表示的是下标 while (a <= b) {//将从左起和从右起的字符串进行比较 boolean left = false; for (int i=0;a+i<=b;i++) { if (cs[a+i]<cs[b-i]) { left = true; break; }else if (cs[a+i] >cs[b-i]){ left = false; break; } } if (left) { T+=cs[a++]; }else { T+=cs[b--]; } } System.out.println(T); } }