判断字符串中的括号是否匹配——c和c++实现
判断字符串中的括号是否匹配
递归实现:
先检搜一对匹配的括号,再对里面的内容进行匹配,匹配完后再继续往下匹配……
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 在start与end中搜索匹配
int fun(char *str, int start, int end)
{
char chLeft; // 左括号
char chRight; // 右括号
while((start<=end) && (str[start] != '\0'))
{
switch(str[start])
{
case '(':
chLeft = str[start];
chRight = ')';
break;
case '[':
chLeft = str[start];
chRight = ']';
break;
case '{':
chLeft = str[start];
chRight = '}';
break;
case ')':
case ']':
case '}':
return 0;
default:
chLeft = '\0';
break;
}
if(str[start] == chLeft)
{
int a = 1;
int b=0;
int t = start+1;
while((t<=end) && (str[t] != '\0')) // 搜索匹配的右括号
{
if(str[t] == chLeft)
++a;
if(str[t] == chRight)
++b;
if(b>a)
return 0;
if(a == b) // 再对匹配括号里面的括号进行匹配
{
if(0 == fun(str, start+1, t-1)) // 递归调用
return 0;
start=t;
break;
}
++t;
}
if(a>b)
return 0;
}
++start;
}
return 1;
}
int main(void){
char str[1024];
gets(str);
int length = strlen(str);
int i = fun(str, 0, length-1);
if(i == 1){
printf("括号匹配!\n");
}else{
printf("括号不匹配!\n");
}
return 0;
}
C++实现如下:
#include <iostream>
#include <cstring>
#include <stack>
using namespace std;
int main()
{
stack<char>a;
int flag=1,i;
char ch[100];
cin>>ch;
for(i=0;i<strlen(ch);i++){
if(ch[i]=='{'||ch[i]=='('||ch[i]=='[')
a.push(ch[i]);
else{
if(a.empty()==true){
flag=0;
break;
}
else if((ch[i]=='}'&&a.top()=='{')||(ch[i]==')'&&a.top()=='(')||(ch[i]==']'&&a.top()=='['))
a.pop();
else{
flag = 0;
break;
}
}
}
if(flag==0)
cout<<"no";
else
cout<<"yes";
}
判断字符串中的括号是否匹配——c和c++实现相关推荐
- 判断字符串中的括号是否匹配-C语言
判断字符串中的括号是否匹配-C语言 递归实现: 先检搜一对匹配的括号,再对里面的内容进行匹配,匹配完后再继续往下匹配-- #include <stdio.h> #include <s ...
- 数据结构算法——判断表达式中的括号是否匹配
元旦三天假,闲着没事干,就想着复习一下学数据结构时的那些算法吧.本来是想用C语言来写的,无奈啊,三四年没用C了,基本上忘光光,还是用C#来写吧,而且.Net基类库中已经有了栈.队列等的实现,直接拿来用 ...
- php 正则 尖括号,php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符...
PHP使用正则表达式提取字符串中尖括号<>.小括号().中括号[].大括号{}中的字符示例,需要的朋友可以参考下 代码如下: $str="你好(爱)[北京]{天安门}" ...
- 判断字符串中是否包含指定字符(JavaScript)
判断字符串中是否包含指定字符 indexOf() indexOf()方法可返回某个指定的字符串值在字符串中首次出现的位置.如果要检索的字符串值没有出现,则返回 -1. search() search( ...
- c语言c判断字符数字,c语言问题求教 利用函数判断字符串中是否全为数字
c语言问题求教 利用函数判断字符串中是否全为数字 答案:4 信息版本:手机版 解决时间 2018-12-22 19:42 已解决 2018-12-22 08:52 c语言问题求教 利用函数判断字符串 ...
- javajs ---- 判断字符串中是否包含子串
java判断 int indexOf(String s) 返回值-1 : 表示不包含 返回值>=0:表示子串在父串中首次出现的索引 String test = "This is tes ...
- Java判断字符串中是否包含中英文标点符号
Java判断字符串中是否包含中英文标点符号 /*** 该函数判断一个字符串是否包含标点符号(中文英文标点符号).* 原理是原字符串做一次清洗,清洗掉所有标点符号.* 此时,如果原字符串包含标点符号,那 ...
- java用正则表达式判断字符串中是否仅包含英文字母、数字和汉字_灵思致远Leansmall的博客-CSDN博客_java判断字符串只包含数字字母
import java.util.regex.Matcher; import java.util.regex.Pattern;public class StrValidate {// 纯数字priva ...
- 判断字符串中的字符是否全都不同(字符类算法)
判断字符串中的字符是否全都不同? 有两种方法可以实现: 第一种就是遍历字符数组,比较字符 第二种就是将字符转化为ASCII码,ascII码理论上只有256个字符 如果字符长度大于256那么,必定是会有 ...
最新文章
- 函数指针,指针函数,数组指针,指针数组 区分
- 修改 Android 5.1 默认设置
- 积极的活下去本身就是挺好的一件事情了
- java操作es聚合操作并显示其他字段_java使用elasticsearch分组进行聚合查询(group by)-项目中实际应用...
- python高斯分布训练_Python画图高斯分布的示例
- 匿名内部类可以访问private_内部类一篇文章搞定
- 程序员进阶之路—如何独当一面
- 如何使用消息队列,Spring Boot和Kubernetes扩展微服务
- 2017.9.6 音量调节 思考记录
- CCF201512-4 送货(100分)
- 关于 Node.js 的认证方面的教程(很可能)是有误的
- Scatter-gather DMA 与 block DMA
- 几岁孩子可以学python_编程python适合多大孩子学
- android 无法播放mp3文件夹,Android Assets文件夹中的Mp3音频无法通过签名...
- 特种期货开户交易权限开通认定标准
- 软件测试师网络工程师,【软件测试工程师(华为项目)网络工程师面试题目|面试经验】-看准网...
- 1996-2016人工智能各大顶级会议最佳论文best paper
- 《短线交易大师》的读书笔记
- echarts4.8.0最新版本下载,亲测可用
- jQuery UI 实例 - 滑块(Slider)
热门文章
- 介绍几款好用的Web开发管理工具
- hdu 4666 Hyperspace
- 投靠Linux第一步 Windows数据向Linux迁徙(1)
- 牛客网(剑指offer) 第十七题 树的子结构
- windows渗透大全
- iOS之深入解析bitcode的功能与应用
- 使用 Carla 和 Python 的自动驾驶汽车第 2 部分 —— 控制汽车并获取传感器数据
- 编写你的第一个 Django 应用,第 3 部分
- 120. Triangle 三角形最小路径和
- Process 'command '/usr/lib/jvm/java-11-openjdk-amd64/bin/java'' finished with non-zero exit value 1