一道数据结构题,设单链表中存放着n个字符,试编写算法,判断该字符串是否有中心对称关系。
输入:
2 //说明有n组测试数据
xyzyz
xyzxy
输出:
Y
N //若有对称关系则输出Y,若无则输出N 展开
可以参考下面的代码:
public static void main(String[] args) {
String str = "abcfcbs";
boolean flag = true;
char[] chs = str.toCharArray();
Stack s = new Stack();
int size = chs.length;
int mid = size/2;
int l = size%2;
for(int i = 0;i<mid;i++){
s.push(chs[i]);
}
int j = 0;
if(l == 0)
j = mid;
else
j = mid+1;
for(;j<size;j++){
if(!s.pop().toString().equals(String.valueOf(chs[j])))
flag = false;
}
if(flag)
System.out.print("Y");
else
System.out.print("N");
}
扩展资料:
常用的数据结构,在计算机科学的发展过程中,数据结构也随之发展,程序设计中常用的数据结构包括如下几个:
数组(Array)
数组是一种聚合数据类型,它是将具有相同类型的若干变量有序地组织在一起的集合。
栈( Stack)
栈是一种特殊的线性表,它只能在一个表的一个固定端进行数据结点的插入和删除操作。栈按照后进先出的原则来存储数据,也就是说,先插入的数据将被压入栈底,最后插入的数据在栈顶,读出数据时,从栈顶开始逐个读出。
队列(Queue)
队列和栈类似,也是一种特殊的线性表。和栈不同的是,队列只允许在表的一端进行插入操作,而在另一端进行删除操作。
参考资料来源:百度百科-数据结构 (计算机存储、组织数据方式)
额,那个,能写下源代码么,我有思路但是写不出来。。
public static void main(String[] args) {
String str = "abcfcbs";//测试字符串
boolean flag = true;//对称标志
char[] chs = str.toCharArray();//将字符串转为字符数组
Stack s = new Stack();//栈
int size = chs.length;//计算字符串总长度
int mid = size/2;//计算中点
int l = size%2;//判读奇数偶数l为0则是偶数l为1则为奇数
for(int i = 0;i<mid;i++){
s.push(chs[i]);//将前半字符压栈
}
int j = 0;
if(l == 0)
j = mid;
else
j = mid+1;
for(;j<size;j++){
if(!s.pop().toString().equals(String.valueOf(chs[j])))
flag = false;
}
if(flag)
System.out.print("Y");
else
System.out.print("N");
}
java写的 测试通过 你自己试一下
广告 您可能关注的内容 |