Java栈操作中的代码题目你是否已经掌握了呢?接下来上题目叭~~~
判断一个序列是否可由给定序列通过栈操作获得(ABCDEF)
这是基础题噢 学不会就打你pp呜呜呜~
还是那句话,原创禁止转载侵权必究略略略。
废话不多说,更新完去碎觉觉惹= =困困
直接上代码:
-代码如下:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62public class Stackjudge { //判断一个序列是否可由给定序列通过栈操作获得(ABCDEF) public static void main(String[] args) throws Exception { char[] c1= {'A','B','C','D','E','F'},c2=new char[6];//c1为原串,c2为目标串 int pos_S=0,pos_T=0;//分别为原串和目标串的指针 System.out.println("原串为:c1= {'A','B','C','D','E','F'}"); System.out.println("请输入需要验证的序列(有6!种排列方式):"); for(int i=0;i<c2.length;i++)//输入数据 { c2[i]=(char)System.in.read(); if(c2[i]=='r'||c2[i]=='n') i--; } System.out.println("目标串为:");//展示数据 for(int i=0;i<c2.length;i++) System.out.print(c2[i]+" "); System.out.println(); LinkStack<Character> l=new LinkStack<Character>(); while(pos_S<c1.length&&pos_T<c2.length) { if(c1[pos_S]==c2[pos_T]) { l.push(c1[pos_S]);pos_S++;//入栈且c1指针后移 l.pop();pos_T++;//出栈且c2指针后移 } else if(c1[pos_S]<c2[pos_T]) { l.push(c1[pos_S]);pos_S++;//入栈且c1指针后移 } else //c1指针元素大于c2指针元素 { if(l.peek().equals(c2[pos_T])) { l.pop();pos_T++;//出栈且c2指针后移 } else { System.out.println("当前出栈元素在栈顶元素之下,无法出栈!"); break; } } } if(l.length()>1) { System.out.println("当前l.length()="+l.length()); System.out.println("该目标串不符合入栈出栈规律!"); } else//有时候可能l里面只有一个数据未出栈,此时可以不用将其出栈(其有能力出栈),只有当出现两个数据,而其中之一欲出而不得,才不符合规律 { System.out.println("当前l.length()="+l.length()); System.out.println("该目标串符合入栈出栈规律!"); } } }
晚安米娜三~~~~希望大家都可以不熬夜,干巴爹!!qwq
最后
以上就是直率季节最近收集整理的关于Java判断一个序列是否可由给定序列通过栈操作获得(ABCDEF)的全部内容,更多相关Java判断一个序列是否可由给定序列通过栈操作获得(ABCDEF)内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复