1.回文串

本题用暴力求解是2^n次,因此采用动态规划。以下附上暴力求解和动态规划的方法

import java.util.ArrayList;
import java.util.Scanner;public class Palindarome {//动态规划public static long solve1(String s){int len=s.length();long[][] dp=new long[len+1][len+1];for(int i=0;i<=len;i++)dp[i][i]=1;for(int i = 2; i <= len; i++) {for(int l = 1; l <=len-i+1; l++) {int r = l + i - 1;dp[l][r] += dp[l + 1][r];dp[l][r] += dp[l][r - 1];if (s.charAt(l-1)== s.charAt(r-1)) dp[l][r] += 1;else dp[l][r] -= dp[l + 1][r-1];}}return dp[1][len];}//暴力求解public static int solve(String s) {  ArrayList<String> result = new ArrayList<String>();ArrayList<ArrayList<String>> lists=new ArrayList<>();for (int i = 1; i <= s.length(); i++) {  solution(s, i, result,lists);  }int ans=0;ArrayList<String> arrayList;for(int i=0;i<lists.size();i++){arrayList=lists.get(i);if(isPalindrome(arrayList, 0, arrayList.size()-1))ans++;}return ans;}  public static void solution(String s, int m, ArrayList<String> result,ArrayList<ArrayList<String>> lists) {  if (m == 0) {  lists.add(new ArrayList<>(result));return;  }  if (s.length() != 0) {  // 选择当前元素  result.add(s.charAt(0) + "");  solution(s.substring(1, s.length()), m - 1, result,lists);  result.remove(result.size() - 1);  // 不选当前元素  solution(s.substring(1, s.length()), m, result,lists);  }  }  public static boolean isPalindrome(ArrayList<String> sb, int left, int right) {while (left <= right && sb.get(left).equals(sb.get(right)) ) {left++;right--;}if(left>right)return true;return false;}public static void main(String args[]) {Scanner sc = new Scanner(System.in);String string = sc.nextLine();System.out.println(solve1(string));}}

2.拆分数字

用java求解时,需要注意输入2^63,所以应该使用long型。

import java.util.Scanner;public class Split {public static void main(String[] args) {// TODO Auto-generated method stubScanner scanner =new Scanner(System.in);int t=scanner.nextInt();for(int i=0;i<t;i++){long N=scanner.nextLong();if(N%2==1)System.out.println("No");else {long Y=2;long X=N/2;while(X%2==0){Y*=2;X/=2;}System.out.println(X+" "+Y);}}}}

3.括号匹配

用一个数统计左括号,一个数统计右括号,每遍历一个字符时,需要统计求右括号-左括号的差值,并用一个值维护最大值。最后判断最大差值是不是小于等于1.同时需要满足左括号个数等于右括号个数。又因为题目交代必须有一次操作,所以左右括号必须大于等于2.满足以上条件才能满足匹配。

import java.util.Scanner;public class Brackets {public static String solve(String string){int ls=string.length();int ans=0;int left=0;int right=0;boolean flag=false;for(int i=0;i<ls;i++){if(string.charAt(i)=='(')left+=1;if(string.charAt(i)==')')right+=1;if(ans==2&&right-left==0)//考虑"))(("系列,比如"))((()"flag=true;if(flag){if(right-left>0)return "No";}ans=Math.max(ans, right-left);if(ans>2)return "No";}if(string.equals(")("))//考虑")(+合理"系列,比如“)(()”、"())(()"return "Yes";if(left==right&&ans<=2&&left>=2)return "Yes";return "No";}public static void main(String[] args) {// TODO Auto-generated method stubScanner scanner=new Scanner(System.in);int t=scanner.nextInt();for(int i=0;i<t;i++){String string=scanner.next();System.out.println(solve(string));}}}

2018春招京东实习编程题解相关推荐

  1. 链家java_链家2018春招Java工程师编程题题解

    Light 题目描述 在小红家里面,有n组开关,触摸每个开关,可以使得一组灯泡点亮.现在问你,使用这n组开关,最多能够使得多少个灯泡点亮呢? 输入 第一行一个n,表示有n组开关.接下来n行,每行第一个 ...

  2. 去哪儿网2018春招软件开发工程师、前段开发工程师编程题 - 题解

    不难,都是常规的操作,故题解写得简单点. 软件开发工程师编程题 第一题:在字典中找自己的逆序 题目 有一个单词列表,一个初始单词,初始单词需要通过单词列表逐步变换得到自己的逆序,求变换所需的最短变换路 ...

  3. 2018春招实习笔试面试总结(PHP)

    2018春招实习笔试面试总结(PHP) 博主双非渣本计算机软件大三狗一枚,眼看着春招就要结束了,现将自己所经历的的整个春招做一个个人总结. 首先就是关于投递计划,博主自己整理了一份各大公司的春招信息, ...

  4. 我的2018春招实习+秋招总结【前端开发】

    双非本科,通信工程,算是转到IT行业这边的了.从大二暑期正式开始学习前端,想想已经一年的时间了.期间经历了很多,从迷惘到清晰,从艰难自学到找到实习,从备战秋招到找到工作.能经历的我都经历过了.来说说那 ...

  5. 数据分析真题日刷 | 京东2019春招京东数据分析类试卷

    开启一个新的系列 -- 「数据分析真题日刷」.七月临近,备战秋招,加油鸭! 今日真题 京东2019春招京东数据分析类试卷(来源:牛客网) 题型 客观题:单选27道,不定项选择3道 完成时间 120分钟 ...

  6. 回顾一波春招找实习的艰苦岁月

    现在回想起来那段日子是真的黑暗,可以说基本是在忧虑,迷茫,自我怀疑的状态下度过的. 因为大三下的课少,所以除了上课的时间,每天的状态就是,起床,开电脑,复习,打码,喝水,复习,打码,看看窗外的风景,喝 ...

  7. 招银科技2018春招线上笔试题

    招银科技2018春招线上笔试题 文章目录 招银科技2018春招线上笔试题 专业知识 1.选择题(30道) 2.简答题 (1道) 3.数据库题(4道) 4.算法题(2道) 心理测试(100道) 总结 专 ...

  8. 华为2018春招笔试题目 字节流解析与长整数相乘

    基础知识杂烩: 字节也叫Byte,是计算机数据的基本存储单位, bit存储内容是0和1,bit是计算机中最小的储存单位 一个Byte是由8个bit组成,它是最小的可寻址单元 ,1个字节等于8位二进制. ...

  9. 2018春招便利蜂--你的准备永远不能覆盖面试官的提问

    这两天投了一波简历,昨天陪女友去听的宣讲会,之后答了笔试题,今天面试,给了口头offer. --记2018春招第一面 笔试题: 1.一个数组里全是正整数,将这个数组中的数字排序后,从前向后输出的正整数 ...

最新文章

  1. 为什么一线互联网公司的校招高薪都是算法类,工程岗校招很难拥有高薪吗?...
  2. 浅谈测试驱动开发(TDD)
  3. 以太坊知识教程------智能合约(2)调用 delegatecall call send
  4. js中推断浏览器类型
  5. Python入门之数据类型
  6. 将活动工作表生成 PDF,并通过电子邮件发送
  7. CAS的三个问题及解决方案
  8. 牛客网暑期ACM多校训练营(第三场) E Sort String 哈希处理字符串(模板)
  9. 计算机网络之数据通信基础知识
  10. 力扣--8字符串转换整数 (atoi)
  11. 网上书店管理系统mysql代码_网上书店管理系统(附程序源代码).pdf
  12. 从iRedMail 创建用户脚本学习PostgreSQL数据库
  13. dynamic动态添加属性
  14. canvas设置lineWidth属性,出现线条被fill覆盖问题。
  15. python字符编码问题_python字符串的编码问题
  16. mysql innerdb 索引,MySQL系列-InnoDB索引优化AHI、Change buffer
  17. Day 2 WebAPIs 实例
  18. 【干货分享】使用Inno Setup设计扁平化风格的安装包
  19. rom是计算机硬件吗,rom,教你手机中ram和rom的区别
  20. Linux共享库概述

热门文章

  1. 数字IC后端知识扫盲——OCV(上)
  2. 使用opencv-python读取多个(海康\华为)网络摄像头的视频流,解决实时读取延迟问题
  3. 小型的代码管理仓库Gitea安装指南
  4. 寒假收获(2015.1.16)
  5. Java并发常见面试题(二)
  6. 在UE5中创建一个受战锤启发的角色
  7. php 游戏开发swoole,《基于 Swoole 的对战游戏实践》开课啦
  8. 让我们的爱洒满孩子们的心
  9. 概率论总结(四): 大数定律及中心极限定理
  10. 合成器插件:KORG Software M1 for Mac