腾讯笔试2

一座矿山,可以将矿山抽象地看成一个字符串S

其中的每个矿山可以看成一个字符,其中当一些矿山遵循一种特殊的元素排列时(用字符串P表示),它就能构成一块能源石。

同时,相邻的两块能源石能够融合成一块更大的能源石,融合时它们前缀和后缀相同的部分可能会重叠在一起。

比如:标准的能源石排列为aba,那么两块标准能源石的融合结果就可能为{abaaba,ababa,aba}

一块能源石的能量等于它长度的平方。

现在小Q希望你告诉他最多可以获得多少能量

xyabababcba

ab

代码

 1 import java.util.ArrayList;
 2 import java.util.Scanner;
 3
 4 public class Tengxun2nengyuanshi {
 5
 6     public static void main(String[] args) {
 7         // TODO Auto-generated method stub
 8         // 一座矿山,可以将矿山抽象地看成一个字符串S
 9         //
10         // 其中的每个矿山可以看成一个字符,其中当一些矿山遵循一种特殊的元素排列时(用字符串P表示),它就能构成一块能源石。
11         //
12         // 同时,相邻的两块能源石能够融合成一块更大的能源石,融合时它们前缀和后缀相同的部分可能会重叠在一起。
13         //
14         // 比如:标准的能源石排列为aba,那么两块标准能源石的融合结果就可能为{abaaba,ababa,aba}
15         //
16         // 一块能源石的能量等于它长度的平方。
17         //
18         // 现在小Q希望你告诉他最多可以获得多少能量
19         // xyabababcba
20         // ab
21         //36
22         //aaa
23         //aa
24         //9
25         Scanner sc = new Scanner(System.in);
26         String s = sc.next();
27         String p = sc.next();
28         System.out.println(nengYuanShi(s, p));
29         sc.close();
30     }
31
32     public static int nengYuanShi(String s, String p) {
33         // int len = 0;xyabababcba
34         // int nengliang = 0;
35         int max = 0;
36
37         // char[] sch = s.toCharArray();
38         char[] pch = p.toCharArray();
39         StringBuffer pbuff = new StringBuffer();
40         StringBuffer sbuff = new StringBuffer();
41         // pbuff.append
42         ArrayList<String> parr = new ArrayList<String>();
43         parr.add(p);
44         // if(pch.length>2) {
45         for (int i = 0; i < pch.length; i++) {
46
47             if (pch.length - 1 - i > i && pch[i] == pch[pch.length - 1 - i]) {
48                 pbuff.append(p).delete(pch.length - 1 - i, pch.length).append(p);
49                 parr.add(pbuff.toString());
50             }
51             pbuff = null;
52             // }
53         }
54         ArrayList<Integer> arr = new ArrayList<Integer>();
55         sbuff.append(s);
56         for (int j = 0; j < parr.size(); j++) {
57             // int max = 0;
58             int len = 0;
59             String p1 = parr.get(j);
60             // char[] ps = parr.get(j).toCharArray();
61
62             while (sbuff.toString().contains(p1)) {
63                 // len = p1.length();
64                 int index = s.indexOf(p1.charAt(0));
65                 // if (s.charAt(index + p1.length()) == p1.charAt(0)) {
66                 sbuff.delete(index, index + p1.length());
67                 len += p1.length();
68                 // }
69
70             }
71             arr.add(len);
72             len = 0;
73
74             sbuff.replace(0, sbuff.length(), s);
75             for (int k : arr)
76                 max = Math.max(max, k);
77             // max += Math.pow(len, 2);
78             // nengliang += Math.pow(max, 2);
79         }
80         return (int) Math.pow(max, 2);
81     }
82
83 }

原文地址:https://www.cnblogs.com/ncznx/p/9690458.html

时间: 2024-10-21 06:52:27

腾讯笔试2的相关文章

2015/4/8腾讯笔试

今天腾讯笔试,自我感觉良好,但是做完之后想到诸多问题....目前把记得的题目记录一下以便之后复习和思考. 首先是一道选择题:一个有五个节点的二叉树有多少种可能性?当时并没有提升到理论高度,只是单纯的分情况讨论,结果把自己给弄混了,随便选了一个,现在来整理一下: 一个有N个节点的二叉树有多少种可能..这个问题确切地说是一个数学问题,跟数据结构联系并不是很大,数学推导占据了很大成分. 首先考虑n=1的情况.显然只有根节点f(1) = 1; n = 2时,有一个根节点,还有n-1 = 1个节点可以作为

2020腾讯笔试--Ice Cave

链接:http://codeforces.com/contest/540/problem/C You play a computer game. Your character stands on some level of a multilevel ice cave. In order to move on forward, you need to descend one level lower and the only way to do this is to fall through the

2015腾讯笔试大题

今天做完腾讯的在线笔试,感觉自己弱爆了,选择题部分考得比较基础,但是考的面比较广,数据结构,计算机网络,算法常识,概率题,C,C++,都有.大题如下: 在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code).请编写一个函数,使用递归方法生成N位的格雷码,并且保证这个函数的健壮性. 2. 有下图的题解,请用C/C++代码来列出满足下图0-100内的所有答案. 3. 如图所示,系统中有三个进程Producer,Transmitter和Consumer.

今天腾讯笔试

第二次参加腾讯的笔试,依旧是网页重构.上次挑战失败,不知道这次战绩如何~保佑保佑. 凭借记忆,回忆了下考点.这回比较侧重考网站性能优化方面的知识,不仅选择中考察,在大题中也考察了.一些基本的CSS知识点,例如这个你真的熟悉吗?    [注]第一个50px指的是width,第二个50px指的是height 要会新增知识:HTML5  CSS3 做一个网页重构,要会一些JS. ======================== 分割线  笔试总结 ===========================

腾讯笔试_天猫魔盒(转载)

笔试:天猫魔盒下单逻辑及数据瓶颈问题 源地址:http://m.blog.csdn.net/blog/undoner/38958779 天猫双十一有个积分换墨盒的活动,总共有50万台天猫魔盒(box),每个用户(user)可以用99个天猫积分(point)兑换一台魔盒,且每人限换一台. 请设计一套java接口并实现下单(order)逻辑. 0参考(但不局限于)下面的下单逻辑: 1.创建订单 2.扣减用户积分 3.扣减魔盒库存 4.下单成功 同时请回答: 1.数据库表结构如何设计,有哪些表,分别有

算法编程题积累(4)——腾讯笔试&quot;有趣的数字“问题

本题基本思路:先对原序列进行排序,再根据不同情况采用不同算法. 首先差最大的对数最好求:用最小的数的个数 × 最大的数的个数即可. 接着求差最小的对数: 1.当序列中无重复关键字时:可知最小差必然产生在相邻元素中,遍历一遍用map保存最小差的对数即可. 2.当序列中有重复关键字时:首先确定最小差为0,故而对相同序列的个数依次用排列组合的知识求对数即可. AC代码如下: 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 vector<

腾讯笔试资源

2012 http://wenku.baidu.com/link?url=3MImdLaHCnzZ8ZFHA856WYzK4CgcBUxKZvHIJbGpmYmqbaYAHq-14oQIozM-AxaZqngK0iKpr7hXlaWgKYWkCVRWFIGJGx-xXEAanJrV5KW 2011 http://blog.csdn.net/zhangyuehuan/article/details/22221071 http://blog.csdn.net/hackbuteer1/article/

腾讯笔试3

小Q喜欢吃甜食,有一天他拿到了一个巧克力条,这个巧克力条由许多排在一行的巧克力球组成,有些球上有坚果,有些球上没有坚果. 小Q想把这个巧克力条掰成很多块(每块包含至少一个巧克力球),每块的大小可以不一样,但是每块上有且只有一个坚果. 小Q想知道有多少种方式在某两个相邻的巧克力球直径掰开但是另一种方式没有,那么这两种方式就是不同的. 如果巧克力只包含一个坚果,那么显然只有一种方式,即不掰. 输入: 第一行数字N(1<=N<=100),表示巧克力球的个数: 第二行N个整数,每两个整数之间一个空格隔

腾讯笔试-1

1.什么是运维?什么是游戏运维? 1)运维是指大型组织已经建立好的网络软硬件的维护,就是要保证业务的上线与运作的正常,在他运转的过程中,对他进行维护,他集合了网络.系统.数据库.开发.安全.监控于一身的技术运维又包括很多种,有DBA运维.网站运维.虚拟化运维.监控运维.游戏运维等等 2)游戏运维又有分工,分为开发运维.应用运维(业务运维)和系统运维开发运维:是给应用运维开发运维工具和运维平台的应用运维:是给业务上线.维护和做故障排除的,用开发运维开发出来的工具给业务上线.维护.做故障排查系统运维