生成回文串

题目描述

对于一个字符串,从前开始读和从后开始读是一样的,我们就称这个字符串是回文串。

例如"ABCBA","AA","A"是回文串,而"ABCD","AAB"不是回文串。

牛牛特别喜欢回文串,他手中有一个字符串s,牛牛在思考能否从字符串中移除部分(0个或多个)字符使其变为回文串,并且牛牛认 为空串不是回文串。

牛牛发现移除的方案可能有很多种,希望你来帮他计算一下一共有多少种移除方案可以使s变为回文串,对于两种移除方案如果移除的字符依次构成的序列不一样就是不同的方法。

输入描述

输入包括一个字符串s(1 <= iength(s) <= 50),s中只包含大写字母。

输出描述

对于每个测试用例,输出一个正整数表示方案数。

思路

dp[l][r]表示区间 [l, r] 内的回文串数目。于是dp[l][r] = dp[l][r - 1] + dp[l + 1][r],根据s[l] 是否等于 s[r], 来看是+1还是减掉重复的部分。

代码实现

package jingdong.demo1;import java.util.Scanner;/*** 生成回文串*/
public class Main {public static void main(String args[]) {Scanner sc = new Scanner(System.in);String s = sc.nextLine();int len = s.length();int[][] dp = new int[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;elsedp[l][r] -= dp[l + 1][r - 1];}}System.out.println(dp[1][len]);}
}

整数分解

题目描述

小Q的数学老师给了小Q一个整数N,问小Q能否将W分解为两个整数X和Y相乘,并且满足X为奇数,Y为偶数,即能否找到奇数X和偶数Y满足X * Y = N,小Q被这个问题难住了,希望能你来帮助他计算。

输入描述:

输入的第一行包含一个正整数t( 1<= t <= 1000 ),表示测试样例数。接下来的t行,每行一个正整数N (2 <= N < 2^63),表示给出的N。保证不是2的幂次。

输出描述:

如果能找到这样的X,Y,则依次输出X,Y,如果有多解输出Y最小的那组解,以空格分割,否则输出"No"。

示例1

输入

2

10

5

输出

5 2

No

思路

先判断N是不是奇数,是的话直接返回No,然后Y从2开始,每次乘2,判断X是不是奇数。

代码实现

package jingdong.demo2;import java.util.Scanner;/*** 整数分解* 先判断N是不是奇数,是的话直接返回No* 然后Y从2开始,每次加2,判断X是不是奇数*/
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int t = sc.nextInt();long[] arr = new long[t];for (int i = 0; i < t; i++) {arr[i] = sc.nextLong();}for (long N : arr) {if (N % 2 != 0) {System.out.println("No");break;}long X;long Y;for (int i = 1; i <= N / 2; i++) {Y = i * 2;if (N % Y == 0) {X = N / Y;if (X % 2 != 0) {System.out.println(X + " " + Y);break;}}}}}
}

牛牛的括号匹配

题目记不清了,和HDU 5831差不多。

思路

用一个计数量 cnt 统计左括号数量就行,匹配到右括号,就另 cnt--,如果 cnt < 0 就认为不匹配。其次,如果左括号数不等于右括号数,可以直接认为不匹配,不进行计算。

代码实现

package jingdong.demo3;import java.util.*;/*** 牛牛的括号匹配*/
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);int N = in.nextInt();while (N-- > 0) {String s = in.next();char[] chars = s.toCharArray();System.out.println(check(chars) ? "Yes" : "No");}}private static boolean check(char[] chars) {int lCnt = 0, rCnt = 0;for (char c : chars) {if (c == '(') lCnt++;else rCnt++;}if (lCnt != rCnt) return false;for (int i = 1; i < chars.length; i++) {for (int j = 0; j < i; j++) {swap(chars, i, j);if (isPalindrome(chars)) return true;swap(chars, i, j);}}return false;}private static boolean isPalindrome(char[] chars) {int cnt = 0;for (char c : chars) {if (c == '(') cnt++;else {if (cnt <= 0) return false;cnt--;}}return cnt == 0;}private static void swap(char[] chars, int i, int j) {char t = chars[i];chars[i] = chars[j];chars[j] = t;}
}

转载于:https://www.cnblogs.com/wupeixuan/p/8765934.html

京东2019春招Java工程师编程题题解相关推荐

  1. 京东2018春招java_京东2019春招Java工程师编程题题解

    生成回文串 题目描述 对于一个字符串,从前开始读和从后开始读是一样的,我们就称这个字符串是回文串. 例如"ABCBA","AA","A"是回 ...

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

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

  3. 京东2019春招Java开发类笔试题

    京东2019春招Java开发类笔试题 1. (单选题) 在对问题的解空间树进行搜索的方法中,一个结点有多次机会成为活结点的是 ( B ) A. 动态规划 B. 回溯法 C. 分支限界法 D. 回溯法和 ...

  4. 京东2019春招算法工程师笔试题-牛牛下象棋(编程题3)

    这次京东2019的春招算法工程师笔试时间是2018-04-09 19:00~21:00,其中有三道编程题目,当时就做了2个,后一个时间原因就没做,就截了一个图,今天又突然看到了,练练手吧哈. 题目要求 ...

  5. 京东2019春招算法工程师笔试 题解 临时版

    前言 不想填坑,永久临时版←_← 这次的笔试编程题是我见过最水的...一着急20分钟就全解决了... 可惜商汤的编程赛比较坑...白让我这么着急做题 第一题 偶数素因数只有2,所以只需要把所有的2分配 ...

  6. 字节跳动2019春招研发部分编程题汇总【题解】

    差不多2个小时才AK,题目难度还行吧. 自己好菜. 题目地址:https://www.nowcoder.com/test/16516564/summary 目录 万万没想到之聪明的编辑 [模拟] 万万 ...

  7. 【牛客网】字节跳动2019春招研发部分编程题汇总

    1-万万没想到之聪明的编辑 解题思路 此题的编辑规则如下 三个同样的字母连在一起,一定是拼写错误,去掉一个的就好啦:比如 helllo -> hello 两对一样的字母(AABB型)连在一起,一 ...

  8. [C语言]字节跳动2019春招研发部分编程题

    1.万万没想到之聪明的编辑 题目描述: 我叫王大锤,是一家出版社的编辑.我负责校对投稿来的英文稿件,这份工作非常烦人,因为每天都要去修正无数的拼写错误.但是,优秀的人总能在平凡的工作中发现真理.我发现 ...

  9. 字节跳动2019春招研发部分编程题汇总(Python版本)

    一.万万没想到之聪明的编辑 王大锤是一家出版社的编辑,负责校对投稿来的英文稿件,他发现一个发现拼写错误的捷径: 三个同样的字母连在一起,一定是拼写错误,去掉一个的就好啦:比如 helllo -> ...

最新文章

  1. python 屏幕找图 点击_捕获屏幕并查找参考图像
  2. 2019.08.17【NOIP?提高组】模拟 A 组 总结
  3. wpf(c#)中获取ComboBox选项值
  4. 各种卡的一些信息积累
  5. C#控制台程序生成文件分析
  6. javascript实战项目——网页版贪吃蛇
  7. 图解:从单个服务器扩展到百万用户的系统
  8. java redis使用卡死_记一次找因 redis 使用不当导致应用卡死 bug 的过程
  9. Linux java 生效不了,linux jdk 不生效怎么办
  10. 信息学奥赛一本通 1159:斐波那契数列
  11. 微软开源计算机视觉专题库,含分类、检测、分割、关键点、跟踪、动作识别等主流方向...
  12. UnitTest测试框架全栈详解
  13. NTFS-3G的安装和配置(Linux下挂载Windows分区必备)
  14. 10x程序员是如何思考的?
  15. C语言深入学习系列 - 字节对齐内存管理
  16. akb48_原AKB48成员板野友美结婚了!闪嫁23岁职棒球员高桥奎二
  17. Bootstrap 时间控件 datetimepicker
  18. 最长公共子序列(LCS) 最长公共子串
  19. android手机截图功能,手机截屏怎么弄?安卓手机怎么截屏?
  20. 联想g510拆键盘的简单方法_笔记本键盘怎么拆 教你如何正确拆笔记本键盘 (全文)...

热门文章

  1. Android PC投屏简单尝试—最终章1
  2. Android Binder ProcessState IPCThreadState相关介绍
  3. Rxjava+Retrofit的使用实例(基于retrofit2.1.0)
  4. 大数据可视化html模板开源_让数据栩栩如生,蚂蚁金服新一代开源数据可视化解决方案——AntV...
  5. python csv 大文件_Python性能调优:JSON到CSV,大文件
  6. Qt 模式视图框架解读之委托
  7. android phonegap 服务器ip配置,android + phoneGap 环境搭建
  8. 谈谈密码学的数学原理
  9. AtCoder AGC032E Modulo Pairing (二分、贪心与结论)
  10. 本地mysql备份至rds_阿里云RDS备份在本地mysql快速还原