2022/07/19----栈的压入、弹出序列;表示数值的字符串

题目描述

栈的压入、弹出序列
表示数值的字符串

解题思路

解题思路:
栈的压入、弹出序列:每一个元素入栈,都要判断是否与出栈列表的元素是否相等。最终判断出栈列表指针是否指向底部。

对于第二题的正则表达式匹配不是很了解,所以参照以下这篇博文进行理解消化。
表示数值的字符串(正则表达式匹配)

代码实现

栈的压入、弹出序列代码实现如下:

package cz;
import java.util.Stack;

public class validPop_0719 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int [] pushed= {1,2,3,4,5};
		int [] popped= {4,5,3,2,1};
		System.out.print(validateStackSequences( pushed, popped));
		
	}
	
	public static boolean validateStackSequences(int[] pushed, int[] popped) {
		//新建一个栈
		
		Stack ms=new Stack();
		int j=0;
		for(int element:pushed)
		{
			ms.push(element);
			while(!ms.isEmpty() && j<popped.length && ms.peek().equals(popped[j])) {
				ms.pop();
				j++;
			}
		}
		
		
		return j==popped.length;

    }

}

表示数值的字符串(感觉自己考虑得不是很清楚,都是出现了漏洞再打补丁。。。重点关注.1;1.;-1.;2e0;e9等数值得坑)

class Solution {
    public boolean isNumber(String s) {
        s=s.trim();//去掉空格
		if(s.length()==0 || !s.matches(".*[\\d].*")) {
			//长度为0或者不包含字符
			return false;
		}
		if(s.contains("e")||s.contains("E")) {
			// //科学计数法e前无数字或者e后无数字
			if(s.matches("^[^0-9]*[e|E].*")) {
				return false;
			}

			return s.matches("^[\\+-]?\\d*\\.?\\d*[e|E][\\+-]?\\d+$");
		}
		else {
            if (s.matches("^[.]?\\d*$")||s.matches("^[\\+-]?\\d+[.]?$")) {
				return true;
				
			}
			return s.matches("^[\\+-]?\\d*\\.?\\d+$");
		}

	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值