百度在线笔试
来源:互联网 发布:软件测试技术 图片 编辑:程序博客网 时间:2024/06/05 21:02
正则匹配问题:
给定’(‘, ‘)’, ‘?’三种字符。当输入合法时输出。
输入:
第一行,包含三种字符的字符串;
第2~n行,代表有n-2个问号,每一行中有两个数字,分别代表替换’?’为’(‘和’)’的代价。
输出:
输出代价最小的,且合法的匹配,先输出代价,再输出匹配的正则式。当多个匹配时,输出第一个最小匹配。
例:
(??)
2 4
2 8
输出为:
4
()()
代码如下:
package q02;import java.util.Map;import java.util.Scanner;import java.util.Stack;import java.util.TreeMap;/** * Created by fing on 2016/4/20. */public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); while (sc.hasNext()){ String str = sc.nextLine(); int len = 0; for(int i=0; i<str.length();i++){ if(str.charAt(i) == '?'){ len++; } } int[] firsts = new int[len]; int[] seconds = new int[len]; for(int i=0; i<len;i++){ firsts[i] = sc.nextInt(); seconds[i] = sc.nextInt(); } Map<Integer,String> map = getStr(len,str,firsts,seconds); for(int i : map.keySet()){ System.out.println(i); System.out.println(map.get(i)); } } sc.close(); } public static Map<Integer,String> getStr(int n, String srcStr, int[] firsts, int[] seconds){ int len = 2 << n -1; StringBuilder sb = new StringBuilder(); Map<Integer,String> map = new TreeMap<>(); for(int i=0; i<len; i++){ String str = Integer.toBinaryString(i); for(int k=1; k<=n-str.length(); k++){ str = "0"+str; } String temp = srcStr; int sum =0; char[] tempChars = temp.toCharArray(); for(int j=0; j<str.length(); j++){ if(str.charAt(j) == '0'){ temp = temp.replaceFirst("\\?","("); sb.append('('); sum += firsts[j]; }else{ temp = temp.replaceFirst("\\?",")"); sb.append(')'); sum += seconds[j]; } } if(isZhengze(temp)){ if(!map.containsKey(sum)){ map.put(sum,temp); } } } return map; } public static boolean isZhengze(String str){ if((str.length() & 0x1) == 1){ return false; } Stack<Character> stack = new Stack<>(); for(int i=0; i<str.length(); i++) { if (str.charAt(i) == '(') { stack.push(str.charAt(i)); } else { if (stack.empty()) { return false; } else { stack.pop(); } } } return stack.empty(); }}
0 0
- 百度在线笔试
- 转百度在线笔试题目
- 2016 - 百度 - 实习 -- 在线笔试
- 百度2015 在线笔试题(1)
- 百度2015 在线笔试题(2)
- 百度2015 在线笔试题(3)
- 百度的在线笔试题目【暂无答案】
- 百度php/jsp职位在线笔试真题专家解答
- 2007年百度招聘在线笔试真题解答
- 百度的在线笔试题目[添加了答案]
- 2006年百度在线笔试题及答案
- 2016校园招聘百度测试开发在线笔试回忆版
- 百度2017校招java研发在线笔试
- 百度笔试
- 百度笔试
- 百度笔试
- 百度笔试
- 百度笔试
- 设计模式的学习(1)
- IOS之CALayer基本使用
- 二叉查找树
- 左链接与内连接的区别、左连接查询的两种查法
- Spring
- 百度在线笔试
- 满足条件的有序表生成
- 在主线程的handler里开子线程 主线程会卡主
- TreeMap类的使用
- AutoCompleteTextView自动提示控件的使用(by 星空武哥)
- [c++]百度笔试题
- spark 协同过滤 (翻译)
- leetcode 41 First Missing Positive
- TreeMap的使用