题目描述
解题思路
解题思路:
栈的压入、弹出序列:每一个元素入栈,都要判断是否与出栈列表的元素是否相等。最终判断出栈列表指针是否指向底部。
对于第二题的正则表达式匹配不是很了解,所以参照以下这篇博文进行理解消化。
表示数值的字符串(正则表达式匹配)
代码实现
栈的压入、弹出序列代码实现如下:
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+$");
}
}
}