码迷,mamicode.com
首页 > 其他好文 > 详细

腾讯笔试2

时间:2018-09-22 18:18:11      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:out   rgs   contain   现在   特殊   let   math   integer   lis   

一座矿山,可以将矿山抽象地看成一个字符串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 }

 

腾讯笔试2

标签:out   rgs   contain   现在   特殊   let   math   integer   lis   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!