登录 注册写文章
首页下载APP
微信图片_20200423223042.jpg
栈:平衡的字符串
扈扈哈嘿关注赞赏支持栈:平衡的字符串
前段时间面试华为时,考官问了一道小算法题。
微信图片_20200423223042.jpg 今天在看数据结构这本书时,想起了这道算法题。
其实就是使用栈这种数据结构判断一个中缀表达式中的分隔符,在这里做一个记录。
import java.util.Stack;
public class BalanceChecker {
public boolean checkBlance(String expression) {
boolean isBalanced = true;
int characterCount = expression.length();
Stack<Character> openDelimiterStack = new Stack<>();
int index = 0;
char nextCharacter = ' ';
while (isBalanced && index < characterCount) {
nextCharacter = expression.charAt(index);
if (nextCharacter == '(' || nextCharacter == '[' || nextCharacter == '{') {
openDelimiterStack.push(nextCharacter);
} else {
if (openDelimiterStack.empty()) {
isBalanced = false;
} else {
Character openDelimiter = openDelimiterStack.pop();
isBalanced = isPaired(openDelimiter, nextCharacter);
}
}
index++;
}
if (!openDelimiterStack.isEmpty())
isBalanced = false;
return isBalanced;
}
private boolean isPaired(Character open, Character close) {
return (open == '(' && close == ')') ||
(open == '[' && close == ']') ||
(open == '{' && close == '}');
}
}
推荐阅读更多精彩内容
- 数据结构和算法(五)栈的操作和实现 数据结构和算法(一)线性表实现 数据结构和算法(二)单向循环链表的创建插入删除实现 数据结构和算法(三)双向链表与... 孔雨露阅读 6评论 0 赞 0
- 数据结构与算法分析2.表、栈、队列、字符串 点击进入我的博客 1 绪论 线性结构的特点 在数据元素的非空有限集中,存在唯一的一个被称为第一个的数据元素 存在唯... 卢卡斯哔哔哔阅读 203评论 0 赞 1
- 数据结构与算法 | 栈的实现及应用 原文链接:https://wangwei.one/posts/java-data-structures-and-a... wangwei_hz阅读 271评论 0 赞 1
- 8 |栈:如何实现浏览器的前进和后退功能? 栈:如何实现浏览器的前进和后退功能? 浏览器的前进、后退功能,我想你肯定很熟悉吧? 当你依次访问完一串页面 a-b... GhostintheCode阅读 314评论 0 赞 2
- 栈的应用--对输入字符串表达式进行计算 在某些情况下,我们需要对输入字符串表达式进行计算,例如一个字符串为:“1 + 2 * 3”,我们需要计算出它的结果... 酸菜Amour阅读 598评论 0 赞 6