给定一个只包含字符’(’,’)’,’{’,’}’,’[‘和’]'的字符串,判断输入字符串是否有效

public class Bracket {

    public static void main(String[] args) {
        String str = "[()]";
        System.out.println(isValid(str));
    }

    // [()]
    public static boolean isValid(String str) {
        Stack<Character> stack = new Stack<>();
        Map<Character, Character> map = new HashMap<Character, Character>();
        map.put(‘)‘, ‘(‘);
        map.put(‘}‘, ‘{‘);
        map.put(‘]‘, ‘[‘);
        char[] chs = str.toCharArray();
        for (Character ch : chs) {
            if (!map.containsKey(ch)) {
                stack.push(ch);
            } else {
                Character item = map.get(ch);
                if (stack.isEmpty() || !item.equals(stack.pop())) {
                    return false;
                }
            }
        }
        return stack.isEmpty();
    }
}

给定一个只包含字符’(’,’)’,’{’,’}’,’[‘和’]'的字符串,判断输入字符串是否有效

原文地址:https://www.cnblogs.com/moris5013/p/11640869.html

时间: 2024-10-10 21:17:27

给定一个只包含字符’(’,’)’,’{’,’}’,’[‘和’]'的字符串,判断输入字符串是否有效的相关文章

给定一个只包含正整数的非空数组,返回该数组中重复次数最多的前N个数字 ,返回的结果按重复次数从多到少降序排列(N不存在取值非法的情况)

1 """ 2 #给定一个只包含正整数的非空数组,返回该数组中重复次数最多的前N个数字 3 #返回的结果按重复次数从多到少降序排列(N不存在取值非法的情况) 4 解题思路: 5 1.设定一个空字典,去存储列表中的值和值出现的次数 6 2.使用L.count()方法可以统计出L中值出现的次数 7 3.使用sorted方法可以进行排序,sorted(iterable,key,reverse) 8 注意key是函数 9 4.列表中的元祖取值 d[i][j] i是哪一个元祖,j是元祖

python_exercise_给定一个只包含正整数的非空数组,返回该数组中重复次数最多的前N个数字 ,返回的结果按重复次数从多到少降序排列(N不存在取值非法的情况)

# 设定给出的非空数组为list_a,如下list_a = [8,1,3,5,1,2,45,8,5,7,7,8,8,8,8,8,8,5,5] # 将list_a去重,留下唯一值list_a_set = set(list_a) # 将list_a去重后的值作为字典的key放到字典中list_a_dict = {x:None for x in list_a_set} # 遍历将list_a去重后的唯一值,统计唯一值出现的次数.把次数作为字典的value放到字典中for l in list_a_set

读取一个文件,给定一个字符串,判断这个字符串在文件中出现的次数

读取一个文件,给定一个字符串,判断这个字符串在文件中出现的次数,面试笔试经常遇到的问题 public class CountStringTest { public static void main(String[] args) { try { //统计E盘下面test.txt中的q字符出现的次数 System.out.println("E盘下面test.txt中的q字符出现的次数为:"); System.err.println(count("E:\\test.txt"

js判断输入字符串长度(汉字算两个字符,字母数字算一个):例如 要求输入12的字,24个字节

<html> <head> <title>js判断输入字符串长度(汉字算两个字符,字母数字算一个)</title> <style type="text/css"> .pbt { margin-bottom: 10px; } .ie6 .pbt .ftid a, .ie7 .pbt .ftid a { margin-top: 1px; } .cl:after { clear: both; content: ".&quo

华为OJ:2199 判断输入字符串中的括号匹配

根据不同的括号有个计数器,在遍历时,当计数器小于0则返回false或者当遍历完后,计数器仍旧不为零,也返回false. import java.util.Scanner; public class bracketsMatch { public static void main(String args[]){ Scanner input=new Scanner(System.in); String s=input.nextLine(); int a=0; int b=0; int c=0; for

ACM457现在给出了一个只包含大小写字母的字符串,不含空格和换行,要求把其中的大写换成小写,小写换成大写,然后输出互换后的字符串。输入 第一行只有一个整数m(m&lt;=10),表示测试数据组数。

#include<stdio.h> #include<string.h> int main() { int n; int i,j; char a[102]; scanf("%d",&n); getchar(); while(n--) { gets(a); j=strlen(a); for(i=0;i<j;i++) { if(a[i]>=65 && a[i]<=90) { a[i]=a[i]+32; } else { a[

写一个少于 80 字符的函数,判断一个字符串是不是回文字符串

废话不多说,直接上代码: 1 function isPalindrome(str){ 2 return (str === str.split('').reverse().join('')); 3 } 4 5 console.log(isPalindrome('1 $bb$1')); // false 6 console.log(isPalindrome('1$bb$1')); // true

给一个只包含 0, 1, * 的 String,将所有的* 替换成 0 或者 1, 返回所有的可能行

void GetAllString(int start, string & str, vector<string> & res) { if (start == str.size()) { res.push_back(str); } else { bool has = false; for (int i = start; i < str.size(); i++) { if (str[i] == '*') { str[i] = '1'; GetAllString(i + 1,

开发小计之判断输入字符串类型(正则表达式)

#pragma mark - 正则表达式 - (BOOL)isMobileNumber:(NSString *)mobileNum { /** * 手机号码 * 移动:134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188 * 联通:130,131,132,152,155,156,185,186 * 电信:133,1349,153,180,189 */ NSString * MOBILE = @"^1(3[0-9]|5[0-35-