admin管理员组文章数量:1487745
括号匹配 “亲兄弟”
1.题目:
2.解析:这个题和括号匹配很相似,都可以用栈解决。
方法一:直接定义栈,遍历字符串,peek一下字符,是否和栈里的字符相等,相等就出栈,不相等入栈。这里注意字符输出顺序,可以再定义一个栈帮助输出:
代码:
代码语言:javascript代码运行次数:0运行复制public static void main(String[] args) {
/**
方法一:
*/
Scanner in = new Scanner(System.in);
char[] s = in.next().toCharArray();
Stack<Character> stack = new Stack<Character>();
Stack<Character> stack2 = new Stack<Character>();//辅助stack栈数据输出顺序字符串
for(int i = 0; i < s.length; i++) {
if(!stack.isEmpty() && s[i] == stack.peek()){
stack.pop();
}else{
stack.push(s[i]);
}
}
if(stack.isEmpty()){
System.out.print(0);
}
while(!stack.isEmpty()){
stack2.push(stack.pop());
}
while(!stack2.isEmpty()){
System.out.print(stack2.pop().toString());
}
}
方法二:用StringBuilder模拟栈:和方法一类似
代码:
代码语言:javascript代码运行次数:0运行复制/**
方法二:用StringBuilder模拟栈:
*/
public static void main2(String[] args){
Scanner in = new Scanner(System.in);
char[] s = in.next().toCharArray();
//用StringBuilder模拟栈
StringBuilder st = new StringBuilder();
for(int i = 0; i < s.length; i++) {
char ch = s[i];
if(st.length() != 0 && ch == st.charAt(st.length()-1)){
//模拟出栈
st.deleteCharAt(st.length()-1);
}else{
//模拟入栈
st.append(ch);
}
}
System.out.println(st.length() == 0 ? 0 : st.toString());
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-09-27,如有侵权请联系 cloudcommunity@tencent 删除数据字符串stacksystem遍历本文标签: 括号匹配 “亲兄弟”
版权声明:本文标题:括号匹配 “亲兄弟” 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/shuma/1754959279a3181755.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论