OJ——华为编程题目:输入字符串括号是否匹配

package t0815;
/*
 * 华为编程题目:输入字符串括号是否匹配
 * 若都匹配输出为0,否则为1
 * 样例输入:Terminal user [name | number (1)]
 * 样例输出:0
 * Java版本
 */
/*
 * 个人总结:
 * (1)语法上Java的输入Scanner使用
 * (2)char[] arr=mxf.toCharArray()的使用,将输入的字符串转成字符数组;这样就可以一个
 *     一个的遍历
 * (3)算法上,这里使用了经典的入栈和出栈的思想
 *
 */

import java.util.Scanner;
import java.util.Vector;

public class huawei_StringMatching {
    public static void main(String[] args){
        System.out.println("请按照规格输入字符串");
        Scanner ScStr=new Scanner(System.in);
        String sqy = ScStr.nextLine();    

        System.out.print(Check(sqy));
    }
    public static int Check(String mxf){
        int count=0;
        int flag=1;
        char[] arr=mxf.toCharArray();
        Vector<Character> vec=new Vector<Character>();
        for(int j=0;j<arr.length;j++){
            if(arr[j]==‘(‘)
                {vec.add(arr[j]);count++;} //入栈,并且计数加1
            if(arr[j]==‘[‘)
                {vec.add(arr[j]);count++;}//入栈,并且计数加1
            if(arr[j]==‘]‘){
                if(vec.elementAt(count-1)==‘[‘)
                {vec.remove(count-1);count--;}//出栈,并且计数减1
            }
            if(arr[j]==‘)‘){
                if(vec.elementAt(count-1)==‘(‘)
                    {vec.remove(count-1);count--;}////出栈,并且计数减1
            }
        }
        if(vec.isEmpty())
            flag=0;  // 如果为空,说明可以正确匹配
        return flag;
    }

}

结果:

请按照规格输入字符串
Terminal user [name | number (1)]
0

时间: 2024-08-25 11:11:41

OJ——华为编程题目:输入字符串括号是否匹配的相关文章

【编程题目】字符串的排列(字符串)★

53.字符串的排列(字符串).题目:输入一个字符串,打印出该字符串中字符的所有排列.例如输入字符串 abc,则输出由字符 a.b.c 所能排列出来的所有字符串abc.acb.bac.bca.cab 和 cba. 这道题花了我一天,要好好总结! 思路:这道题目感觉有些难,主要是字符串中的字符可能会有重复.我的想法是把一共有多少种字符和每种字符出现的次数统计出来,每个位置对这些字符变量,下一个位置的可用字符减小,再遍历. /* 53.字符串的排列(字符串). 题目:输入一个字符串,打印出该字符串中字

华为编程题:字符串排序

题目描述 编写一个程序,将输入字符串中的字符按如下规则排序. 规则1:英文字母从A到Z排列,不区分大小写. 如,输入:Type 输出:epTy 规则2:同一个英文字母的大小写同时存在时,按照输入顺序排列. 如,输入:BabA 输出:aABb 规则3:非英文字母的其它字符保持原来的位置. 如,输入:By?e 输出:Be?y 样例: 输入: A Famous Saying: Much Ado About Nothing(2012/8). 输出: A aaAAbc dFgghh: iimM nNn o

LeetCode10 Hard,带你实现字符串的正则匹配

本文始发于个人公众号:TechFlow 这是LeetCode的第10题,题目关于字符串的正则匹配,我们先来看题目相关信息: Link Regular Expression Matching Difficulty Hard Description Given an input string (s) and a pattern (p), implement regular expression matching with support for '.' and '*'. '.' Matches an

括号的匹配

括号的匹配 括号的匹配问题 简单的分析一下 可以用的括号可以分为以下几种 "()" "[]" "{}" "<>" 匹配过程中又以下四种情况 左右括号乱序 左括号比右括号多 右括号比左括号多 匹配 算法思路 定义一个栈,根据栈后进先出的特性进行括号匹配 依次读入一个字符当这个字符是左括号时,将其压入栈顶 重复第二步,如果字符时右括号将栈顶元素出栈与当前字符匹配,如果匹配不做任何操作,如果不匹配将这两个字符再次压入栈直

华为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

【编程题目】在一个字符串中找到第一个只出现一次的字符。如输入 abaccdeff,则输出 b。

第 17 题(字符串):题目:在一个字符串中找到第一个只出现一次的字符.如输入 abaccdeff,则输出 b. 思路:此题非常容易. 最开始是想开辟一块空间存储每个字符出现的次数. 但转念一想,似乎没有必要. 对每一个字符,都依次和后面的比较,若出现了两次,则检查下一个字符,遇到只出现一次的,直接输出就好了. /* 第 17 题(字符串): 题目:在一个字符串中找到第一个只出现一次的字符.如输入 abaccdeff,则输出 b. 分析:这道题是 2006 年 google 的一道笔试题. */

【华为OJ】【083-计算字符串的相似度】

[华为OJ][算法总篇章] [华为OJ][083-计算字符串的相似度] [工程下载] 题目描述 对于不同的字符串,我们希望能有办法判断相似程度,我们定义了一套操作方法来把两个不相同的字符串变得相同,具体的操作方法如下: 1 修改一个字符,如把"a"替换为"b". 2 增加一个字符,如把"abdd"变为"aebdd". 3 删除一个字符,如把"travelling"变为"traveling"

【华为OJ】【078-计算字符串的距离】

[华为OJ][算法总篇章] [华为OJ][078-计算字符串的距离] [工程下载] 题目描述 Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数.许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符.编辑距离的算法是首先由俄国科学家Levenshtein提出的,故又叫Levenshtein Distance. Ex: 字符串A:abcdefg 字符串B: abcdef 通过增加或是删掉字符"g"的方式达到目的.

【华为OJ】【022-删除字符串中出现次数最少的字符】

[华为OJ][算法总篇章] [华为OJ][022-删除字符串中出现次数最少的字符] [工程下载] 题目描述 实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除.输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序. 输入描述 字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节. 输出描述 删除字符串中出现次数最少的字符后的字符串. 输入例子 abcdd 输出例子 dd 算法实现 import java.util.*; /** * Author: