Description

牛客网 2018校招真题 回文

Solving Ideas

计算以str[str.length() - 1]为结尾的最大的回文长度,从而判断最少需要追加多少个字母才能使整个串成为回文。

Solution

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;/*** @author wylu*/
public class Main {public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));char[] str = br.readLine().toCharArray();//以str[str.length() - 1]为结尾的最大的回文长度int maxLen = 0;for (int i = 0; i < str.length; i++) {if (str.length - i > maxLen && isPalindrome(str, i, str.length - 1)) {maxLen = str.length - i;}}System.out.println(2 * str.length - maxLen);}private static boolean isPalindrome(char[] str, int begin, int end) {for (int i = begin, j = end; i < j; i++, j--) {if (str[i] != str[j]) return false;}return true;}
}
import java.util.Scanner;/*** @author wylu*/
public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);while (scanner.hasNext()) {char[] str = scanner.next().toCharArray();//dp[0]: 以str[str.length() - 1]为结尾的最大的回文长度int[] dp = {0};for (int i = (str.length - 1) / 2; i < str.length; i++) {//以str[i]为中心的回文的长度expandAroundCenter(str, i, i, dp);//以str[i]-str[i+1]之间的间隔为中心的回文的长度expandAroundCenter(str, i, i + 1, dp);}int res = (str.length - dp[0]) + str.length;System.out.println(res);}}private static void expandAroundCenter(char[] str, int i, int j, int[] dp) {for (; i >= 0 && j < str.length && str[i] == str[j]; i--, j++) {if (j == str.length - 1) dp[0] = Math.max(dp[0], j - i + 1);}}
}

牛客网 2018校招真题 京东 回文相关推荐

  1. 牛客网 2018校招真题 美团点评 K的倍数

    Description 牛客网 2018校招真题 K的倍数 Solving Ideas sum[i + 1]: 表示序列p[0]...p[i]的和 从长度最大的子串开始判断,当剩余需要判断子串长度不可 ...

  2. 牛客网 2018校招真题 摩拜 排序次数

    Description 牛客网 2018校招真题 排序次数 Solving Ideas 将数组a的元素拷贝到数组b 对数组b进行排序 对比数组b,统计数组a中已排序的元素个数 如:a = [2, 11 ...

  3. 牛客网 2018校招真题 滴滴出行 寻找丑数

    Description 牛客网 2018校招真题 寻找丑数 Solving Ideas 参考<剑指offer>丑数 Time complexity : O(n)O(n)O(n) Space ...

  4. 牛客网 2018校招真题 爱奇艺 最后一位

    Description 牛客网 2018校招真题 最后一位 Solving Ideas 二分查找 Solution import java.io.BufferedReader; import java ...

  5. 牛客网 2018校招真题 美团点评 关灯游戏

    Description 牛客网 2018校招真题 关灯游戏 Solving Ideas 只与最右边的数字有关,如果最右边的数字为1,则Alice赢,否则Bob赢 假设最右边的数字为1 因为Alice是 ...

  6. 牛客网 2018校招真题 网易 骰子游戏

    Description 牛客网 2018校招真题 骰子游戏 Solving Ideas 参考<剑指offer>n个骰子的点数 考虑用两个数组来存储骰子点数的每一个总数出现的次数. 在一次循 ...

  7. 牛客网 2018校招真题 美团点评 重要节点

    Description 牛客网 2018校招真题 重要节点 Solving Ideas BFS 创建一个标记数组arrive,arrive[i][j]为true表示从i可以到达j, false则不能 ...

  8. 牛客网 2018校招真题 招商银行信用卡 整数成绩最大化

    Description 牛客网 2018校招真题 整数成绩最大化 Solving Ideas 当n>4时,最大受益为尽可能拆分出更多的数字3,最后一个不足3的,若其为1则分给其中一个3,得到4, ...

  9. 牛客网——2017校招真题在线编程(pythonC++)

    牛客网--2017校招真题在线编程(python&C++) 1.n个数里的最小k个 题目描述 找出n个数里最小的k个 输入描述: 每个测试输入包含空格分割的n+1个整数,最后一个整数为k值,n ...

最新文章

  1. CSDN 2022 届春季校园招聘火热启动!
  2. 北京钛谷诚泽网络通讯科技有限公司
  3. Python编程基础:第五十三节 匿名函数Lambda Function
  4. OpenCV 中的绘制功能
  5. 为什么要使用Entity Framework
  6. Python学习:命令行运行,循环结构
  7. git创建分支合并到master分支步骤
  8. c语言星钻图形的输出
  9. 计算机网络练习题-1
  10. sonarqube + nexus 分析项目组成员代码状况,并生成报表
  11. mysql +cobar_MySQL 中间件 cobar 初体验
  12. 怎么查看微信收藏功能的剩余可用空间
  13. glassfish插件_可扩展GlassFish v3的JavaEE 6平台
  14. 100部经典中国电影,你看过几部?
  15. 被夸大的伊朗“Twitter革命”
  16. LDPC码的EXIT图
  17. excel怎么一个格子斜分_『在Excel中,把一个格子用线分成三个怎么弄啊』一个单元格怎么斜分两个...
  18. 具有自主产权的SAAS多门店POS收银系统全套源码输出
  19. Java工程师修炼之路(校招总结)
  20. Kaggle情绪分类比赛

热门文章

  1. 逃出迷宫完整算法C++
  2. Super VLAN+ARP代理应用案例
  3. 华为交换机vlan间arp代理
  4. 个推推送Android问题检测
  5. Rust开发环境搭建(Linux)
  6. 竞品技术三瞥安装包的大小
  7. Java学习(一)我的2017年Java学习计划
  8. quote symbol expected 异常处理
  9. 《Adobe Illustrator CS6中文版经典教程(彩色版)》—第0课0.13节使用绘图模式
  10. 最新微信固码免签监控系统+完美运营+完整数据+带搭建教程和APP