• 腾讯笔试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 }

     方法二:

     1 public static int nengYuanShi2(String s, String p) {
     2         int slen = s.length();
     3         int plen = p.length();
     4         int t = 0;
     5         int x = 0;
     6         int n = 0;
     7         String ss=null;
     8         for (int i = 0; i < slen +1; i++) {
     9             if(i+plen>slen) 
    10                  ss=s.substring(i);
    11             else 
    12                  ss = s.substring(i, i + plen);
    13             if (ss .equals(p) ) {
    14                 t++;
    15                 x = plen - 1;
    16             } else {
    17                 if (x > 0) {
    18                     t++;
    19                     x--;
    20                 } else {
    21                     n += t * t;
    22                     t = 0;
    23                 }
    24             }
    25         }
    26         return n;
    27     }
  • 相关阅读:
    lucene复合条件查询案例——查询name域 或 description域 包含lucene关键字的两种方式
    谈谈你对spring的理解?
    模拟Http请求的几种常用方式
    idea破解教程
    Pycharm 或者 idea 注册码 (亲测可用)
    超详细虚拟机工具和Centos7 Linux系统安装
    严重: Error loading WebappClassLoader context:异常的解决方法(转)
    spring cloud 笔记记录
    近一周学习之-----vue学习快乐之旅(1)
    近一周学习之-----vue开发工具visual studio code
  • 原文地址:https://www.cnblogs.com/ncznx/p/9690458.html
Copyright © 2020-2023  润新知