当前位置: 首页 > news >正文

能自己做网站接业务吗泉州关键词快速排名

能自己做网站接业务吗,泉州关键词快速排名,深圳酒店网站建设,软件开发网站建设1. 力扣20 : 有效的符号 (1). 题 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个…

1. 力扣20 : 有效的符号

(1). 题

给定一个只包括 '('')''{''}''['']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。

示例 1:

输入:s = "()"
输出:true

示例 2:

输入:s = "()[]{}"
输出:true

示例 3:

输入:s = "(]"
输出:false

提示:

  • 1 <= s.length <= 104
  • s 仅由括号 '()[]{}' 组成

(2). 思路

自己设计了一个栈类. 首先判断该字符串是否是空字符串,如果不是空字符串,那么将栈的栈顶元素与字符串此时需要比较的字符值进行匹配,如果成功匹配,则将该栈顶元素移除pop,如果不匹配,那么将该字符值push到栈.

判断该字符串是否是有效的,只需判断栈是否为空即可.

(3). 解

class Solution {public boolean isValid(String s) {//如果是空字符串if(s.length() == 0) {return true;}EnStack stack = new EnStack(s.length());int i = 0;while(i < s.length()) {if(stack.peek() == '(' && s.charAt(i) == ')') {stack.pop();} else if (stack.peek() == '{' && s.charAt(i) == '}') {stack.pop();} else if(stack.peek() == '[' && s.charAt(i) == ']') {stack.pop();} else {stack.push(s.charAt(i));}i++;}return stack.isEmpty();}
}
class EnStack{//栈顶指针private int top;private char[] stack;public EnStack(int capacity) {stack = new char[capacity];}public void push(char value) {if(isFull()) {return;}stack[top++] = value;}public void pop() {if (isEmpty()) {return;}--top;}public char peek() {if(isEmpty()) {//只要返回的不是'{','[','('其中之一的字符就行return 'a';}return stack[top - 1];}public boolean isFull() {return top == stack.length;}public boolean isEmpty() {return top == 0;}
}

2. 力扣150 : 逆波兰表达式求值

(1). 题 : 

给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。

请你计算该表达式。返回一个表示表达式值的整数。

注意:

  • 有效的算符为 '+''-''*' 和 '/' 。
  • 每个操作数(运算对象)都可以是一个整数或者另一个表达式。
  • 两个整数之间的除法总是 向零截断 。
  • 表达式中不含除零运算。
  • 输入是一个根据逆波兰表示法表示的算术表达式。
  • 答案及所有中间计算结果可以用 32 位 整数表示。

示例 1:

输入:tokens = ["2","1","+","3","*"]
输出:9
解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9

示例 2:

输入:tokens = ["4","13","5","/","+"]
输出:6
解释:该算式转化为常见的中缀算术表达式为:(4 + (13 / 5)) = 6

示例 3:

输入:tokens = ["10","6","9","3","+","-11","*","/","*","17","+","5","+"]
输出:22
解释:该算式转化为常见的中缀算术表达式为:((10 * (6 / ((9 + 3) * -11))) + 17) + 5
= ((10 * (6 / (12 * -11))) + 17) + 5
= ((10 * (6 / -132)) + 17) + 5
= ((10 * 0) + 17) + 5
= (0 + 17) + 5
= 17 + 5
= 22

提示:

  • 1 <= tokens.length <= 104
  • tokens[i] 是一个算符("+""-""*" 或 "/"),或是在范围 [-200, 200] 内的一个整数

逆波兰表达式:

逆波兰表达式是一种后缀表达式,所谓后缀就是指算符写在后面。

  • 平常使用的算式则是一种中缀表达式,如 ( 1 + 2 ) * ( 3 + 4 ) 。
  • 该算式的逆波兰表达式写法为 ( ( 1 2 + ) ( 3 4 + ) * ) 。

逆波兰表达式主要有以下两个优点:

  • 去掉括号后表达式无歧义,上式即便写成 1 2 + 3 4 + * 也可以依据次序计算出正确结果。
  • 适合用栈操作运算:遇到数字则入栈;遇到算符则取出栈顶两个数字进行计算,并将结果压入栈中

(2). 思路

使用双端队列,如果字符串内容是整数,则压如栈中. 如果是符号,则弹栈计算结果再压入栈.最后栈中剩余的即是最后计算的结果.

(3). 解

class Solution {public int evalRPN(String[] tokens) {Deque<Integer> stack = new LinkedList<>();int i = 0;while(i < tokens.length) {if(isNumber(tokens[i])) {int k = Integer.parseInt(tokens[i]);stack.push(k);} else {int i1 = stack.pop();int i2 = stack.pop();switch(tokens[i]) {case "+" :stack.push(i1 + i2);break;case "-" :stack.push(i2 - i1);break;case "*" :stack.push(i1 * i2);break;case "/" :stack.push(i2 / i1);break;}}i++;}return stack.pop();}public boolean isNumber(String s) {if (s.equals("+") || s.equals("-") || s.equals("*") || s.equals("/")) {return false;} else{return true;}}
}
http://www.khdw.cn/news/43928.html

相关文章:

  • 做gif图的网站北京百度快速排名
  • 网站建设对教育解决方案企业网站的功能
  • 诚信网站的申请有几家公司可以做的关键词搜索趋势
  • 中国建设银行网站 党费云杭州seo招聘
  • 做网站能接到模具单吗百度app下载官方
  • 网站建立需要多久百度手机助手下载2021新版
  • 专业长沙做网站公司产品软文范例大全
  • 协助别人做网站犯法么google代理
  • 青岛做门户网站公司全国疫情排名一览表
  • 华为云做网站网站建设费用多少钱
  • 开发区网站制作公司北京seo顾问
  • 网站开发需要的语言深圳搜索引擎优化推广便宜
  • b s网站开发产品的网络推广要点
  • 北京海淀网站制作公司免费人脉推广
  • 一级a做爰片免费观看网站吉林网站seo
  • 哪个网站空间好北京百度推广优化公司
  • 移动互联网开发实习报告武汉seo百度
  • 科技部网站建设合同想做百度推广找谁
  • 做外汇的官方网站专门发广告的app
  • 揭阳新站seo方案线下推广活动策划方案
  • 兼职网站开发跨境电商平台
  • 阿里巴巴网站维护怎么做百度收录在线提交
  • 做超市dm的网站seo搜狗排名点击
  • 俄文网站建设 俄文网站设计百姓网
  • 承德建设局网站友情链接发布网
  • 自己有域名怎么做网站全网品牌推广公司
  • 跨境电子商务网站建设营销课程培训都有哪些
  • java电商平台开发重庆seo代理计费
  • 怎么做网站申请广告点击排名优化
  • 速冻蔬菜做哪个国际网站好上海百度推广电话