网易真题之暗黑字符串

Posted 且听风吟-wuchao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网易真题之暗黑字符串相关的知识,希望对你有一定的参考价值。

题目如下:

字符串只包含‘A’,‘B‘,‘C‘,对于一个任意长度的字符串,如果存在连续的3个字符同时包含"A","B""C",那这个字符串是纯净的,否则称为暗黑字符串。比如“BCBBACBBCA”就是纯净字符串,“ABBAACCBBA”就是暗黑字符串。

 

input:一个整数,表示字符串的长度

output:暗黑字符串可能的个数

分析:

这种题目使用遍历或者排列组合求解,基本不可能,运算量巨大。可以通过查找关系,列出通项公式。

以f(n)表示n位字符串存在的暗黑字符串的个数,有以下关系:f(n)=f(n-2)*3+(f(n-1)-f(n-2))*2

 

代码如下:

package project001;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class Main05 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
//        System.out.println(Rev(120));
        Scanner in = new Scanner(System.in);
        while(in.hasNext()){
            int a = in.nextInt();
            
            System.out.println(getN(a));
        }
    }
    
    public static long getN(int k){
        List<Long> list = new ArrayList<Long>();
        list.add((long) 3);
        list.add((long) 9);
        list.add((long) 21);
        for(int i=1;i<=k;i++){
            if(k<=3) break;
            list.add(3*list.get(list.size()-2)+2*(list.get(list.size()-1)-(list.get(list.size()-2))));
        }
        return list.get(k-1);
    }
}

 

以上是关于网易真题之暗黑字符串的主要内容,如果未能解决你的问题,请参考以下文章

求解暗黑字符串(网易2017秋招)

求解暗黑字符串(网易2017秋招)

网易+暴雪,你怕不怕?《暗黑破坏神:不朽》手游评测

校招真题练习027 小易的字典(网易)

网易2017春招笔试真题编程题集合(10)——小易记单词

网易2017春招笔试真题编程题集合——奇怪的表达式求值