public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// AB玩家
String PA = sc.next();
String PB = sc.next();
//A的手牌
Queue<Character> A = new LinkedList<Character>();
char[] charArrayA = PA.toCharArray();
for(char c:charArrayA){
A.offer(c);
}
//B的手牌
Queue<Character> B = new LinkedList<Character>();
char[] charArrayB = PB.toCharArray();
for(char c:charArrayB){
B.offer(c);
}
//桌子上的牌
Stack<Character> desk = new Stack<Character>();
boolean flag = true;
while(true){
if(flag){
//A出的牌
Character Aout = A.poll();
//在桌子上是否能找到一张相同牌的下标
int indexOf = desk.indexOf(Aout);
//如果!=-1表明有相同的牌
if(indexOf!=-1){
desk.push(Aout);
//桌子上收的牌,加入A的牌
int deskleng = desk.size();
for(int i=indexOf;i<deskleng;i++){
//逐渐拿起桌子上的牌(栈的特性,因此是倒着拿的牌),并加入手牌
Character win = desk.pop();
A.offer(win);
}
}else{
//桌子上加的牌
desk.push(Aout);
flag = false;
}
if(A.size()==0){
for(char c:B){
System.out.print(c);
}
break;
}
}
if(!flag){
//B出的牌
Character Bout = B.poll();
//在桌子上是否能找到一张相同牌的下标
int indexOf = desk.indexOf(Bout);
//如果!=-1表明有相同的牌
if(indexOf!=-1){
desk.push(Bout);
int deskleng = desk.size();
//桌子上收的牌,加入B的牌
for(int i=indexOf;i<deskleng;i++){
//逐渐拿起桌子上的牌(栈的特性,因此是倒着拿的牌),并加入手牌
Character win = desk.pop();
B.offer(win);
}
}else{
//桌子上加的牌
desk.push(Bout);
flag = true;
}
if(B.size()==0){
for(char c:A){
System.out.print(c);
}
break;
}
}
}
}
蓝桥杯历届试题----拉马车(java)
最新推荐文章于 2024-04-07 07:00:00 发布