算法学习之六:栈
来源:互联网 发布:知世故而不世故的女孩 编辑:程序博客网 时间:2024/06/14 21:02
栈的概念:
栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。
关键点:只能在一端进行插入和删除的操作。
代码说明:
用最常见的一个例子:用栈来判断某个字符串是否是回文字符串。大致说下回文字符串:就是正过来,反过来都是一样的,比如:abba, abcba等等(从中间开始,左右对称)这些就是回文的,而abebe就不是。
public class Stack { public static boolean isHalfSame(String src){ char [] srcArr = src.toCharArray(); char[] stack = new char[srcArr.length/2]; int mid =srcArr.length/2-1 ; int half ; int top = 0;//top 作为栈的指针 if(srcArr.length%2==0){ half = srcArr.length/2; }else{ half = srcArr.length/2+1; } for(int i = 0;i<=mid;i++){ stack[top++] = srcArr[i];//将stringArr前一半的数据存入栈中: } --top;//top索引超过了,需减去 //将栈中的元素取出:比照stringArr后半部分的元素,判断是否相等 for(int i = half;i<srcArr.length;i++){ if(srcArr[i]!=stack[top]){ break; } top--; } if(top<0){ Log.e("hxy","是回文字符串"); return true; }else{ Log.e("hxy","不是回文字符串"); return false; } }}
测试:
String str ="ahcche"; String str1 ="abba"; String str2 ="abcba"; Stack.isHalfSame(str); Stack.isHalfSame(str1); Stack.isHalfSame(str2);
总结:
栈中只允许在一端进行插入和删除。Android对activity的维护就在一个栈中,另外,许多app上有个返回button,也是一个栈的操作。
0 1
- 算法学习之六:栈
- 算法学习(六)--链表之单链表
- 学习笔记六:算法之排序
- 机器学习之六-神经网络算法
- [机器学习](六)cs229之EM算法
- 机器学习之(六)常见机器学习算法比较
- 机器学习之(六)常见机器学习算法比较
- 【C++ STL学习之六】STL算法之for_each
- 【C++ STL学习之六】STL算法之for_each
- 【C++ STL学习之六】STL算法之for_each
- 算法导论之六栈与队列
- 栈和队列的数组实现—《算法导论》学习笔记之六
- 学习python之路---python小算法总结(六)
- 机器学习算法之六:5分钟上手Logistic Regression
- SQL学习之六
- 深度学习之六:
- vb学习之六
- 算法学习(六)--优先队列
- IO流---文件复制
- js面向对象,继承
- 设备树学习之(七)I2C设备的注册过程分析
- Linux下mysql用sqlyog连接报1042 can not get hostname for your address的问题
- HashMap的工作原理
- 算法学习之六:栈
- copy_from_user 和 toctou
- 数据类型与NSMutableArray添加对象(insertObject)引起的问题
- 如何: 如何提供自己 DllMain MFC 的规则 DLL 中
- 自定义步骤进度指示器
- jsfiddle中国国内版本 JSRUN
- c/c++的编译原理
- 第五节:Maven仓库(下)
- 解决This function or variable may be unsafe