精华内容
下载资源
问答
  • .net C# 判断字符串 “90>100 || 200<300” 为true或者是false
  • 刚解析完回文字符串的思路,趁热打铁把判断表达式是否闭合也理一理。此题中闭合元素只考虑圆括号(),方括号[],大括号{}。三种。方法不止一种。这只是我能想到的。 如果单纯的判断表达式是否闭合,不返回未闭合元素...

    刚解析完回文字符串的思路,趁热打铁把判断表达式是否闭合也理一理。此题中闭合元素只考虑圆括号(),方括号[],大括号{}。三种。方法不止一种。这只是我能想到的。

    如果单纯的判断表达式是否闭合,不返回未闭合元素的下标。

    • 1,提取表达式中所有括号;
    • 2, 数量为奇数或者依右括号开始}])直接返回false;
    • 3, 否则,判断是{,[(的时候入栈,否则出栈, 如果最后数量是0返回true,否则false
    function isClose(str) {
        let len = str.length;
        let reg = /(\[|\]|\{|\}|\(|\))/g;
        let arr = str.match(reg);
        if (arr.length % 2 || /(\}|\]|\))/.test(arr[0])) {
            return false
        } else {
            let stack = [];
            while (arr.length) {
                let _v = arr.shift()
                if (/(\[|\{|\()/.test(_v)) {
                    console.log(1);
                    stack.push(_v)
                } else {
                    stack.pop()
                }
            };
            console.log(stack)
            return !stack.length
        }
    }
    复制代码

    判断是否闭合,并返回下标呢。

    利用双指针加字典解法。

    • 1.设置头尾双指针。
    • 2.分别判断头尾两个指针对应的元素是否是闭合元素,如果不是闭合元素,头指针向右移动,尾指针向左移动,直到两个指针指向的都是闭合元素。
    • 3.判断头尾对应的元素是不是闭合元素,不是则返回下标,重复2步骤。
    var dir = {
        "{": "}",
        "[": "]",
        "(": ")",
        ")": "(",
        "}": "{"
    }
    
    function atWhereNoClose(str) {
        let len = str.length;
        let left = 0;
        let right = len - 1;
        let flg = true;
        while (left < right) {
            while (!/(\[|\{|\()/.test(str[left]) && left < right) {
                left++
            }
            while (!/(\}|\]|\))/.test(str[right]) && left < right) {
                right--
            }
            if (dir[str[left]] !== str[right]) {
                if (dir[str[left]] && left <= right) {
                    flg = left
                    break;
                }
            } else {
                left++
                right--
            }
    
        }
        return flg;
    }
    console.log(atWhereNoClose("{[[ab}}"))
    console.log(atWhereNoClose("{ab}"))
    console.log(atWhereNoClose("{({[ab]})}"))
    console.log(atWhereNoClose("ab}"))
    复制代码
    展开全文
  • 栈应用 , 判断表达式是否正确

    千次阅读 2012-10-05 08:49:49
    一,模拟栈   package com.zf.test; public class StackX { private int maxLengh ; private int top ; private Character[] array ; public StackX(int maxLengh){ ... this.maxLengh = maxLe

    一,模拟栈

         

    package com.zf.test;
    
    public class StackX {
    
    	private int maxLengh ;
    
    	private int top ;
    
    	private Character[] array ;
    
    	public StackX(int maxLengh){
    		this.maxLengh = maxLengh ;
    		this.array = new Character[maxLengh];
    		this.top = -1 ;
    	}
    
    
    	public int size(){
    		return this.top ;
    	}
    
    	public void put(char entry){
    		if(isFull())
    			throw new ArrayIndexOutOfBoundsException("array is fully!");
    		array[++top] = entry ;
    	}
        
    	public char pop(){
    		if(isEmpty())  
    			throw new ArrayIndexOutOfBoundsException("array is empty!");
    		return array[top--];
    	}
    	
    	public boolean isEmpty(){
    		return top == -1 ;
    	}
    	
    	public boolean isFull(){
    		return top == maxLengh - 1;
    	}
    
    }
    


     

     

    2,应用

     

    package com.zf.test;
    
    public class ExpressionMatcher {
    
    	private final static int right = 0 ;
    	private final static int left = 1 ; 
    
    	public static boolean matcher(String expStr){
    		StackX sx = new StackX(100);
    		for (int i = 0; i < expStr.length(); i++) {  
    			char c = expStr.charAt(i);
    			if(obtainFh(c) == left){
    				sx.put(c);
    			}else if(obtainFh(c) == right){
    				if(sx.isEmpty())
    					throw new RuntimeException("没找到匹配项:" + c);
    				char l = sx.pop(); 
    				if(!matchers(l, c)){ 
    					throw new RuntimeException(l  + " 与 " + c + "不匹配");
    				}
    			}
    		}
    		return sx.isEmpty();
    	}
    
    	private static int obtainFh(char c){
    		switch(c)
    		{
    		case '(' : 
    		case '[' :
    		case '{' :
    			return left ;
    		case ')' :
    		case ']' :
    		case '}' :
    			return right ;
    		default : return -1 ; 
    		}
    	}
        
    	private static boolean matchers(char left , char right){
    		if(
    			(left == '(' && right == ')')
    			|| (left == '[' && right == ']')
    			|| (left == '{' && right == '}')
    		   ) 
    			return true ;
    		return false;
    	}
        
    	public static void main(String[] args) {
    		System.out.println(matcher( "212(1(21)1){4(5)4{5}}") );
    	}
    
    }
    


     

    展开全文
  • 判断一个表达式是否正确

    千次阅读 2014-06-22 16:14:15
    import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class Test { ... System.out.println("表达式错误!"); } } }
    import javax.script.ScriptEngine;
    import javax.script.ScriptEngineManager;
    import javax.script.ScriptException;
    
    
    public class Test {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		        ScriptEngineManager manager = new ScriptEngineManager();
    		 
    		        ScriptEngine engine = manager.getEngineByName("javascript");
    		        try {
    		        	String s1="10*5+9-25/2";
    		            Double d = (Double) engine.eval(s1);
    		            //if()
    		            System.out.println(d);
    		        } catch (ScriptException ex) {
    		        	System.out.println("表达式错误!");
    		        }
    		 
    		    }
    	}
    

    展开全文
  • 用c语言判断数理逻辑里的表达式是否是公式的方法
  • 设计一个算法采用顺序栈判断表达式中的括号是否正确配对。
  • 将中缀表达式,转换为后缀表达式。 并由中缀表达式及后缀表达式生成二叉树,用于判断表达式是否合法。(包括表达式的逻辑判断)
  • 《数据结构,算法及应用》 zhangxianchao P80 13题
  • 问题及代码: /* ...* All rights reserved. * 文件名称:date.cpp * 作 者:单昕昕 * 完成日期:2016年3月31日 * 版 本 号:v1.0 * 问题描述:假设表达式中允许包含3中... 设计一个算法采用“顺序栈”判断表达式中的括号

    问题及代码:

    /*
    * Copyright (c) 2016, 烟台大学计算机与控制工程学院
    * All rights reserved.
    * 文件名称:date.cpp
    * 作    者:单昕昕
    * 完成日期:2016年3月31日
    * 版 本 号:v1.0
    * 问题描述:假设表达式中允许包含3中括号:圆括号、中括号和大括号。
                设计一个算法采用“顺序栈”判断表达式中的括号是否正确配对。
    * 程序输入:一个字符串表达式。
    * 程序输出:括号是否正确配对。
    */
    #include<iostream>
    #include<cstring>
    #include<malloc.h>
    using namespace std;
    const int MaxSize=100;
    
    typedef struct linknode
    {
        char data[MaxSize];
        int top;
    }SqStack;
    
    void initStack(SqStack *&s)
    {
        s=(SqStack *)malloc(sizeof(SqStack));
        s->top=-1;
    }
    
    bool Push(SqStack *&s,char e)
    {
        if(s->top==MaxSize-1)
            return false;
        s->top++;
        s->data[s->top]=e;
        return true;
    }
    
    bool Pop(SqStack *&s,char &e)
    {
        if(s->top==-1)
            return false;
        e=s->data[s->top];
        s->top--;
        return true;
    }
    
    bool GetTop(SqStack *s,char &e)
    {
        if(s->top==-1)
            return false;
        e=s->data[s->top];
        return true;
    }
    
    bool StackEmpty(SqStack *s)
    {
        return(s->top==-1);
    }
    
    void DestroyStack(SqStack *&s)
    {
        free(s);
    }
    
    bool Match(char exp[],int n)
    {
        int i=0;
        char e;
        bool match=true;
        SqStack *st;
        initStack(st);
        while(i<n&&match)
        {
            if(exp[i]=='(')
                Push(st,exp[i]);
            else if(exp[i]==')')
            {
                if(GetTop(st,e)==true)
                {
                    if(e!='(')
                        match=false;
                    else
                        Pop(st,e);
                }
                else match=false;
            }
            else if(exp[i]=='[')
                Push(st,exp[i]);
            else if(exp[i]==']')
            {
                if(GetTop(st,e)==true)
                {
                    if(e!='[')
                        match=false;
                    else
                        Pop(st,e);
                }
                else match=false;
            }
            else if(exp[i]=='{')
                Push(st,exp[i]);
            else if(exp[i]=='}')
            {
                if(GetTop(st,e)==true)
                {
                    if(e!='{')
                        match=false;
                    else
                        Pop(st,e);
                }
                else match=false;
            }
            ++i;
        }
        if(!StackEmpty(st)) match=false;
        DestroyStack(st);
        return match;
    }
    int main()
    {
        char s[100];
        cin>>s;
        int len=strlen(s);
        bool m=Match(s,len);
        if(m==true)
            cout<<"SUCCESS!"<<endl;
        else
            cout<<"FAIL!"<<endl;
        return 0;
    }
    

    运行结果:



    展开全文
  • 算符优先文法处理判断算术表达式源代码、说明文档、输入输出详细说明及截图
  • 1. 算法思路1.1 把表达式转换为字符串数组,String biaoda = "(((1+(2)-6))";// 表达式 char biao[] = biaoda.toCharArray();// 将字符串转化成字符数组1.2 设置一个计数器,左括号+1,右括号-1,表达式中计算完毕后...
  • regexp tester点击test按钮,可以测试正则表达式是否正确 进入正则表达式页面,书写表达式 模板:表示使用提取到的第几个值: −1-1−1:表示取所有值 000:表示随机取值 111:表示取第1个 222:表示取第二个 以此类推:...
  • 判断表达式中的括号是否正确配对。求教。假设表达式中允许包含三种括号:()、[]和{}。编写一个算法判断表达式中的括号是否正确配对。思路:设置一个括号栈,扫描表达式,遇到左括号时进栈,遇到右括号,若是相匹配的...
  • 设计一个算法采用“链栈”判断表达式中的括号是否正确配对。 * 程序输入:一个字符串表达式。 * 程序输出:括号是否正确配对。 */ #include #include #include using namespace std; typedef struct linknode {...
  • 编译原理课程设计, 算符优先文法分析算术表达式是否正确
  • 下面小编就为大家带来一篇PHP判断表达式中括号是否匹配的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 编写一个算法判断表达式中的括号是否正确配对。 思路:设置一个括号栈,扫描表达式,遇到左括号时进栈,遇到右括号,若是相匹配的左括号,则出栈,否则返回0。若表达式扫描结束后,栈为空,返回1,表示括号正确匹配...
  • 主要介绍了java正则表达式判断 ip 地址是否正确解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 指针从最后边扫描起,遇到操作符则存入栈中并且从表达式中删除该操作符,同时标记其匹配的操作数为0,如果遇到操作数,则应该对栈顶的操作符的配对操作数加一,当新来一个操作符时,对前面操作符的操作数配对期望...
  • 数据结构上机作业。数据结构张宪超第二章13题。 假设表达式中允许包含3种括号:圆括号,方括号,大括号。设计算法采用顺序栈判断表达式中的括号是否正确配对。
  • JS正则表达式判断邮箱格式是否正确

    万次阅读 2016-12-20 16:10:46
    一般的邮箱格式为:123456@qq.com,若用indexOf来判断此email地址,那么当用户输入了123456@qq的时候,检测仍可通过,明显这个地址缺少了后面的“.com”,所以这是不行的,最好还是使用正则来判断: <script ...
  • 编写算法,判断一个表达式中的括号是否正确配对,表达式已经存入字符数组exp[]中,表达式的字符个数为n。 分析 本题可以用栈来解决,下面就来说说为什么要用栈来解决。 给你一个表达式,目测怎么判断括号是否匹配...
  • //判断密码格式 var reg=/^(\d|[A-z]|_){6,12}$/g; do{ var password=prompt("请输入密码:6-12位,可包含数字字母下划线"); if(reg.test(password)){ alert("密码设置成功"); break; }else{ ...
  • 下面小编就为大家分享一篇ios利用正则表达式判断手机号码格式是否正确的实例,具有很好的参考价值。希望对大家有所帮助。一起跟随小编过来看看吧
  • * title: 判断表达式中括号是否匹配 * Description: () 匹配 )(不匹配 利用压栈和出栈 * 使用数组来模拟进栈和出栈array_push() array_pop() * @author Liu */ header("Content-Type: text/html;...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 188,578
精华内容 75,431
关键字:

判断表达式是否正确