您的位置:首页 > 其它

字典序最小问题

2015-09-26 15:15 239 查看
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);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: