解题思路:既然通过添加一个字母可以变为回文串,那么通过删除与添加的字母相对位置的字符,应该亦为回文串。

例如:

  • ‘abcb’在末尾添加’a’ —> ‘abcba’为回文串
    ‘abcb’删除与想要添加的字符’a’对应位置的字符 —> ‘bcb’亦为回文串

  • ‘aabbaab’在头部添加’b’ —> ‘baabbaab’为回文串
    ‘aabbaab’删除与想要添加的字符’b’对应位置的字符 —> ‘aabbaa’亦为回文串

Java算法实现:

import java.util.Scanner;public class Main {final String Y = "YES";final String N = "NO";public String isPalindrome(String input) {if (input == null || "".equals(input)) {return Y;}int length = input.length();//题目说明不超过10个字符,那么超过的话,直接返回NOif (length > 10) {return N;}StringBuilder sb = new StringBuilder(input);for (int i = 0; i < length; i++) {sb.deleteCharAt(i);String temp = sb.toString();if (sb.reverse().toString().equals(temp)) {return Y;} else {sb = new StringBuilder(input);continue;}}return N;}public static void main(String[] args) {Scanner cin = new Scanner(System.in);String input;while (cin.hasNext()) {input = cin.next();System.out.println(new Main().isPalindrome(input));}}}

解题思路:

  1. 小蘑的时间假设为[a,b],小菇的时间假设是[c+t,d+t],小菇起床的时间是t∈[l,r]
  2. 那么当"a < b < (c+t) < (d+t)"或者"(c+t) < (d+t) < a < b"的情况时,小蘑和小菇无法聊天,由题目条件已知"a < b""c < d",那么推出"(c+t) < (d+t)"
  3. 所以仅仅当"b < (c+t)"或者"(d+t) < a"时无法聊天,其余情况都是可以聊天的

Java算法实现:

import java.util.Scanner;public class Main2 {private static void isLegal(int num, boolean flag) {
//        flag为true标识判断[1,50],flag为false标识判断[0,1000]if (flag) {if (!(1 <= num && num <= 50)) {
//                System.out.println("数据非法");System.exit(0);}} else {if (!(0 <= num && num <= 1000)) {
//                System.out.println("数据非法");System.exit(0);}}}public static void main(String[] args) {Scanner cin = new Scanner(System.in);while (cin.hasNextInt()) {int p = 0, q = 0, l = 0, r = 0;p = cin.nextInt();isLegal(p, true);q = cin.nextInt();isLegal(q, true);l = cin.nextInt();isLegal(l, false);r = cin.nextInt();isLegal(r, false);int[] time_A_B = new int[p * 2];//标识小蘑的时间int[] time_C_D = new int[q * 2];//标识小菇的时间for (int i = 0; i < time_A_B.length; i++) {
//            接收p行的数据,每一行数据是一个时间对int temp = cin.nextInt();isLegal(temp, false);time_A_B[i] = temp;}for (int i = 0; i < time_C_D.length; i++) {int temp = cin.nextInt();isLegal(temp, false);time_C_D[i] = temp;}int count = 0;//标识小菇能有多少个合适的起床时间begin:for (int t = l; t <= r; t++) {for (int i = 0; i < time_A_B.length; i += 2) {for (int j = 0; j < time_C_D.length; j += 2) {if (!(time_C_D[j] + t > time_A_B[i + 1] || time_C_D[j + 1] + t < time_A_B[i])) {count++;continue begin;}}}}System.out.println(count);}}}

解题思路:

  1. length = sqrt((x1-x2)^2+(y1-y2)^2)先计算两个圆心点之间的距离
  2. 参考上图,以(2 0 0 0 4)作为输入数据进行说明,当两个圆心点之间的距离lenght<(2*r+1)的时候,我们是不能够沿着两个圆心之间的连线进行移动的,而由两点之间直线最短,可知,沿两圆心的连线进行移动是最短的距离,换句话说,旋转一次移动的最长距离就是2*r,而在旋转之前需要先移动一步,所以阈值设为2*r+1
  3. 那么当lenght<(2*r+1)的时候,我们该如何进行旋转呢?正确的做法是以(x1,y1)为圆心r为半径作圆,与以(x,y)为圆心的圆的交叉点就是支点,固定此点旋转即可
  4. 根据以上的分析,再以(2 0 0 0 5)作为输入数据进行说明,当length>=(2*r+1),那么length中有几个(2*r+1),我们就需要走几步,如果相除不为整数,那么加1即可。
Java算法实现:
import java.util.Scanner;public class Main3 {public static void main(String[] args) {Scanner cin = new Scanner(System.in);while (cin.hasNextInt()) {int r = cin.nextInt();if (r < 1 || r > 100000) {System.exit(0);}int x = cin.nextInt();int y = cin.nextInt();int x1 = cin.nextInt();int y1 = cin.nextInt();if (x < -100000 || x > 100000) {System.exit(0);}if (y < -100000 || y > 100000) {System.exit(0);}if (x1 < -100000 || x1 > 100000) {System.exit(0);}if (y1 < -100000 || y1 > 100000) {System.exit(0);}double length = Math.sqrt(Math.pow(x - x1, 2) + Math.pow(y - y1, 2));int count;//向上取整之后强转为int型即可count = (int) Math.ceil(length / (2 * r + 1));System.out.println(count);}}
}

仅供参考!!!

蘑菇街2016校园招聘之编程题解析-技术类相关推荐

  1. 搜狗2016校园招聘之编程题解析-大数据开发

    搜狗2016校园招聘之编程题解析-大数据开发 解题思路: 使用JDK中的Point2D类,该类定义了坐标系空间中的一个点 Point2D是一个抽象类,但是在该类内部定义了静态的Double类,并且Do ...

  2. 奇虎360_2017校园招聘笔试编程题第一题

    今晚做了360的校招笔试题,编程题难度适中,在这里跟大家分享一下编程题的第一题. 1. 题目 2. 输入输出及样例 3. 我的思路 这题应该看题目理解一下就有思路,最简单粗暴的就是创建一个二维数组in ...

  3. 奇虎360_2017校园招聘笔试编程题第二题

    今晚做了360的校招笔试题,编程题难度适中,在这里跟大家分享一下编程题的第二题.第二道题也不难想到思路,但是如果写法不当,可能无法满足题目的时间限制. 1. 题目 2. 输入输出及样例 3. 我的思路 ...

  4. 魔法王国java_网易2018校园招聘面试编程题真题与参考答案集合

    [编程题] 魔法币 小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,但是小易有两台魔法机器可以通过投入x(x可以为0)个魔法币产生更多的魔法币. 魔法机器1: ...

  5. 蘑菇街2016研发工程师在线编程题 - 题解

    今天无聊地蛋疼,所以在牛客网随便找了套题做做,随手写了下解题报告,套题链接:点这里 总体来说这套题就考了下贪心和模拟,最后一题考了一个经典的动态规划,其实也有别的方法可以搞,这题对于大家练手还是不错的 ...

  6. 奇虎360 2015校园招聘笔试编程题

    题目一: 写一个函数,根据两文件的绝对路径算出相对路径. 如a="/qihoo/app/a/b/c/d/new.c",b="/qihoo/app/1/2/test.c&q ...

  7. 美团2021届秋季校园招聘笔试真题解析:小团的复制粘贴

    问题 小团是一个莫得感情的 CtrlCV 大师,他有一个下标从 1 开始的序列 A 和一个初始全部为 -1 序列 B ,两个序列的长度都是 n .他会进行若干次操作,每一次操作,他都会选择 A 序列中 ...

  8. 腾讯2020校园招聘-后台 编程题

    小Q想要给他的朋友发送一个神秘字符串,但是他发现字符串的过于长了,于是小Q发明了一种压缩算法对字符串中重复的部分进行了压缩,对于字符串中连续的m个相同字符串S将会压缩为[m|S](m为一个整数且1&l ...

  9. 滴滴 2019校园招聘笔试编程题-2018.09.18

    输入: slep slap sleep step shoe shop snap slep 输出: slep slap step 代码是交卷后写出来的,没有经过测试,不知道是否能够AC 利用DP求出每个 ...

  10. 京东2015校园招聘笔试编程题

    题目一: 请编写一个函数func,输入一个正整数n,返回一个最小的正整数m(m>9,即m至少包含两位数),使得m的各位乘积等于n,例如输入36,输出49:输入100,输出455,如果对于某个n不 ...

最新文章

  1. mysql 存储过程 获取错误,MySQL存储过程相互调用并获得错误码示例
  2. JConsole远程连接配置
  3. android 通知栏按钮,android 通知栏添加按钮点击效果
  4. 实验7-3-5 输出大写英文字母 (15分)
  5. apache camel_REST与Apache Camel
  6. python中的numpy函数算相关系数_NumPy ufunc通用函数
  7. java怎么引入html文件路径_如何在public_html中读取文件但在域外?使用相对路径...
  8. 云服务器太卡,云服务器解决io过高导致的命令卡顿
  9. oracle的cols,Oraclecols_as_rows比对数据
  10. GitHub#python#:用自组织映射解决旅行商问题
  11. JAVA编程规范总结
  12. php 瓶颈,使用XHProf查找PHP性能瓶颈
  13. IDEA-Maven的Dependencies中出现红色波浪线
  14. Linux Shell脚本测试案例(一)
  15. 黑马程序员JVM完整教程
  16. SQL注入原理,啊D明小子高手必看! 明小子4.1我已上传 可以下载
  17. 手柄映射键盘_新手有什么手机游戏手柄推荐?简单易懂5分钟教会你做出选择...
  18. Mac Eclips安装Activiti Designer插件
  19. 海洋表面洋流数据可视化
  20. [yzhpdh多读paper]Discovering Shifts to Suicidal Ideationfrom Mental Health Content in Social Media

热门文章

  1. python中axis=0和axis=1的理解
  2. 退休当月要干到月底吗_退休时间是从到达年龄的当月算起还是次月算起
  3. {转载}——jvm verbose 参数详解
  4. 百度 android 市场占有率,2019百度 排行榜_2019安卓应用市场排行榜Top10
  5. 用友服务器的系统管理,用友软件系统管理模块常见问题解析及方法
  6. 微信公众号里的视频下载
  7. java poi 导出excel加密
  8. 神来之笔,阿里最新Spring Security源码手册牵动了多少人的心,拿走不谢
  9. 软件测试需要学数学,现在才开始学软件测试还有前途吗?
  10. 迎接虎虎生威的2010暨2009年51CTO年终总结大会