-
岗位:大数据开发工程师
-
笔试时间:2019年03月20日
import java.util.Scanner;
/**
* 笔试第一题:输入一个字符串,表示100以内的加减法,计算结果
* 实例 输入:“12 3-5” ,输出:10
* @author yangkuan
*/
public class Main1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s = scanner.next();
System.out.println(computeResult(s));
}
public static int computeResult(String s) {
String[] splits = s.split("\\ |-");
boolean[] flag = new boolean[splits.length - 1];
int k = 0;
for (int i = 0; i < s.length(); i ) {
if (s.charAt(i) == ' ') {
flag[k ] = true;
} else if (s.charAt(i) == '-') {
flag[k ] = false;
}
}
int result = Integer.valueOf(splits[0]);
for (int i = 1; i < splits.length; i ) {
if (flag[i - 1] == true) {
result = Integer.valueOf(splits[i]);
} else {
result -= Integer.valueOf(splits[i]);
}
}
return result;
}
}
package com.second.huawei;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Scanner;
/**
* 笔试第二题:寻找蛇形字符串
* 使用hashmap分别存储大写字符和小写字符
* @author yangkuan
*/
public class Main2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s = scanner.next();
List<String> results = findPythonString(s);
if(results.size()==0){
System.out.println("Not Found");
}else {
for(String result:results){
System.out.println(result);
}
}
}
public static List<String> findPythonString(String s){
HashMap<Character,Integer> lowMap = new HashMap<>();
HashMap<Character,Integer> bigMap = new HashMap<>();
for(int i=0;i<s.length();i ){
char ch = s.charAt(i);
if(ch<='z'&&ch>='a'){
lowMap.put(ch,lowMap.getOrDefault(ch,0) 1);
}
else if(ch<='Z'&&ch>='A'){
bigMap.put(ch,bigMap.getOrDefault(ch,0) 1);
}
}
List<String> list = new ArrayList<>();
while (!bigMap.isEmpty()){
for(char ch='A';ch<='Z';ch ){
if(bigMap.containsKey(ch)&&lowMap.containsKey(Character.toLowerCase(ch))){
StringBuilder sb = new StringBuilder();
sb.append(ch);
sb.append(Character.toLowerCase(ch));
bigMap.put(ch,bigMap.get(ch)-1);
lowMap.put(Character.toLowerCase(ch),lowMap.get(Character.toLowerCase(ch))-1);
if(bigMap.get(ch)==0) bigMap.remove(ch);
if(lowMap.get(Character.toLowerCase(ch))==0) lowMap.remove(Character.toLowerCase(ch));
goAhead(sb,lowMap,bigMap);
list.add(sb.toString());
break;
}
else if(bigMap.containsKey(ch)){
bigMap.remove(ch);
}
else if(lowMap.containsKey(Character.toLowerCase(ch))){
lowMap.remove(Character.toLowerCase(ch));
}
}
}
return list;
}
private static void goAhead(StringBuilder sb
,HashMap<Character,Integer> lowMap
,HashMap<Character,Integer> bigMap){
char slowCh = (char) (sb.charAt(sb.length()-1) 1);
char bigCh = Character.toUpperCase(slowCh);
if(bigMap.containsKey(bigCh)&&lowMap.containsKey(slowCh)){
sb.append(bigCh);
sb.append(slowCh);
bigMap.put(bigCh,bigMap.get(bigCh)-1);
lowMap.put(slowCh,lowMap.get(slowCh)-1);
if(bigMap.get(bigCh)==0) bigMap.remove(bigCh);
if(lowMap.get(slowCh)==0) lowMap.remove(slowCh);
goAhead(sb,lowMap,bigMap);
}
else if(bigMap.containsKey(bigCh)){
bigMap.remove(bigCh);
}
else if(lowMap.containsKey(slowCh)){
lowMap.remove(slowCh);
}
}
}
import java.util.*;
/**
* 笔试第三题:状态机
* 状态机首先定义状态,根据当前状态得到下一个状态
* @author yangkuan
*/
public class Main3 {
class Node {
String preState;
String eventSource;
String object;
String event;
String nextState;
public Node(String preState, String eventSource, String object, String event, String nextState) {
this.preState = preState;
this.eventSource = eventSource;
this.object = object;
this.event = event;
this.nextState = nextState;
}
public String matchNode(String preState, String eventSource, String event) {
if ((this.preState.equals(preState) || (this.preState.equals("no finished") && !preState.equals("finished")))
&& this.eventSource.equals(eventSource)
&& this.event.equals(event)) {
return this.nextState;
}
return "false";
}
}
Node node1 = new Node("init", "RmApp", "o", "start", "submitted");
Node node2 = new Node("submitted", "ResourceScheduler", "o", "app_accepted", "scheduled");
Node node3 = new Node("scheduled", "RmContainer", "o", "container_allocated", "allocated");
Node node4 = new Node("scheduled", "ApplicationMasterLauncher", "o", "launched", "running");
Node node5 = new Node("running", "ResourceScheduler", "o", "finished", "finished");
Node node6 = new Node("no finished", "RmApp", "o", "kill", "killed");
Node[] nodes = {node1, node2, node3, node4, node5, node6};
public void transformState(String s) {
String[] transforms = s.split(" ");
Map<String,String> objectMap = new HashMap<>();
for(String transform:transforms){
String object =transform.split("\\|")[1];
objectMap.put(object,"init");
}
for (String transform : transforms) {
String[] strings = transform.split("\\|");
String eventSource = strings[0];
String object = strings[1];
String event = strings[2];
String nextState;
for (Node node:nodes){
if (!(nextState = node.matchNode(objectMap.get(object), eventSource, event)).equals("false")) {
System.out.println(object "|" nextState);
objectMap.put(object,new String(nextState));
}
}
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
new Main3().transformState(s);
}
}
// 输入: RmApp|RmAppAttempt_001|start RmApp|RmAppAttempt_002|start RmApp|RmAppAttempt_001|kill
#实习##笔试题目##笔经##华为##题解#