2017年360公司校招Java研发笔试编程第一题

来源:互联网 发布:外星人设置灯光软件 编辑:程序博客网 时间:2024/05/16 06:49

2017年360公司校招笔试编程第一题

(服务端开发工程师-Java职位)

---------------------------------------------------------------------------------------------------------------

 /*题目描述:
小B乘火车和朋友们一起在N市到M市之间旅行。她在路途中时睡时醒。当她醒来观看窗外的风景时,注意到每个火车站都有一种特别颜色的旗帜,但是她看到的旗帜仅仅是经过的一小部分。
小B在乘车过程中有两次清醒的时间,她到达旅程终点时处于睡梦中。出站时,她和朋友们谈论着一路的见闻,朋友们觉得很有意思。他们把N到和M之间经过车站的旗帜颜色依次列出来,
然后告诉你小B记得的旗帜颜色序列,让你判断小B究竟是从N和M之间哪些方向才能看到所说颜色的旗帜,还是根本就不可能看到?颜色用字母代表,相同的字母代表相同的颜色,
不同的字母则表示不同的颜色。
输入
输入中有多组测试数据。每组测试数据包含三行,第一行为一个由小写拉丁字母构成的非空字符串,长度不超过10^5,表示N到M之间车站的颜色。火车从M向N运行时,经过的车站相同,
只是方向相反。第二行为小B在第一次睡醒时看到的颜色序列,第三行为小B在第二次睡醒时看到的颜色序列。两个序列都是小写的拉丁字母构成的字符串,长度不超过100个字母。
每个序列的颜色顺序排列按小B看到的时间顺序排列。
输出
对每组测试数据,在单独的行中输出小B的旅行方向。
forward – 由N到M方向;
backward – 由M到N方向;
both – 两种方向都有可能;
invalid – 不可能看到这样的颜色序列;

样例输入
atob
a
b
aaacaaa
aca
aa
样例输出
forward
both

Hint
火车假定时刻处于运动状态,不会两次看到同一个旗帜。N市和M市的车站没有旗帜。*/ 


import java.util.Scanner;public class Main {/** 2017年360公司校招 编程1题 *  * */public static void main(String[] args) {Scanner in = new Scanner(System.in);while (in.hasNext()) {String line = in.nextLine();String line1 = in.nextLine();String line2 = in.nextLine();//去程Boolean b1 = line.contains(line1);Boolean b2 = false;Boolean b3 = false;if (b1 == true) {String line3 = line.substring(line.indexOf(line1) + line1.length());b2 = line3.contains(line2);if (b2 == true) {b3 = true;}}//返程StringBuilder sb1 = new StringBuilder(line);sb1.reverse();//输入的旗帜颜色逆序排列Boolean c1 = sb1.toString().contains(line1);Boolean c2 = false;Boolean c3 = false;if (c1 == true) {String line3 = sb1.toString().substring(sb1.toString().indexOf(line1) + line1.length());c2 = line3.contains(line2);if (c2 == true) {c3 = true;}}if (b3 == true && c3 == true) {System.out.println("both");} else if (b3 == true && c3 == false) {System.out.println("forward");} else if (b3 == false && c3 == true) {System.out.println("backward");} else {System.out.println("invalid");}}}}


0 0