您的位置:首页 > 其它

字典序最小问题

2016-12-17 21:52 155 查看

字典序最小问题

给定长度为N的字符串S, 要构造一个长度为N的字符串T。起初,T是一个空串,随后反复进行下列任意操作:

从S的头部删除一个字符,加到T的尾部

从S的尾部删除一个字符,加到T的尾部

目标是要构造字典序尽可能小的字符串T。

思路:取两端小的,如果两段一样,就比较下一个字符的大小,希望尽早使用更小的字符

public class Test {
public static void main(String[] args) throws IOException {
char arr[]={'A','C','D','B','C','B'};
char arr2[] = {'A','C','B','B'};
solve(arr2);
}
public static void solve(char arr[]){
int a=0,b=arr.length-1;
while(a<=b){
boolean left = false;
for (int i=0; a+i<=b; i++){
if(arr[a+i]<arr[b-i]){
left = true;
break;
}
else if(arr[a+i]>arr[b-i]){
left = false;
break;
}
}
if(left)
System.out.print(arr[a++]);
else
System.out.print(arr[b--]);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: