招商银行信用卡中心笔试编程题

三道题,今天整理发出来讨论讨论
1.判断字符串是否由其子串构成
2.给定整数n,将n分解成i1+i2+...in=n,求i1*i2*...*in最大值
3.n组左右括号组成的合法组合(卡特尔数)


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

public class Main {

    public static List<String> strList=new ArrayList<>();//test3
    public static void main(String[] args) {
        //test1();
        //test2();
        test3();
    }

    /**
     * 招行笔试第三题:卡特尔数
     */
    public static void test3(){
        Scanner scanner=new Scanner(System.in);
        while (scanner.hasNext()){
            int n=scanner.nextInt();
            test33(n,n,"");
            for (int i=strList.size()-1;i>=0;i--){
                System.out.print(i>0?strList.get(i)+",":strList.get(i)+"\n");
            }
            strList.clear();
        }
    }

    public static void test33(int l,int r,String s){
        if (l==0&&r==0){
            strList.add(s);
            return;
        }
        if (l<r){
            test33(l,r-1,s+")");
        }
        if (l>0){
            test33(l-1,r,s+"(");
        }
    }


    /**
     * 招行笔试第二题:给定整数n,将n分解成i1+i2+...in=n,求i1*i2*...*in最大值
     * 策略:首先尽量分为3,其次分为4或者2
     */
    public static void test2(){
        Scanner scanner=new Scanner(System.in);
        while(scanner.hasNext()){
            int n=scanner.nextInt();
            int res=1;
            while(n-3>=2){
                n-=3;
                res*=3;
            }
            res*=n;
            System.out.println(res);
        }
    }

    /**
     * 招行笔试第一题
     */
    public static void test1(){
        Scanner scanner=new Scanner(System.in);
        while(scanner.hasNext()) {
            test11(scanner.next());
        }
    }

    /**
     * 招行笔试第一题:字符串是否由其子串构成,若是输出子串,否输出false
     * @param str 字符串
     */
    public static void test11(String str){
            int n = str.length();
            int m;
            int flag=0;
            for(int i=n/2; i>=1; i--){     //i为原字符串的可重复子串的子串的长度;对每种可能长度的子串进行遍历,i为子串长度。
                if( n%i == 0 ){         //n%i == 0:长度为i的子串可以切分str,否则,str的长度不能整除i,表示str就不可能由若干子串重复组成
                    m = n/i;            //m: str中长度为i的子串的个数
                    for(int j=0; j <i; j++){      //比较m个长度为i的子串是否相等,j遍历子串的每个字符
                        flag=0;                 //标记所有子串所有元素是否相等
                        for(int k=1;k<m;k++) {          //k遍历所有子串
                            if(str.charAt(j) != str.charAt(j+k*i)){        //比较子串的第j个位置的字符是否相等
                                flag = 1;                                  //如果不等,则退出比较,当前子串长度i的划分不满足要求,结束,更新i,进行下一次的搜索
                                break;
                            }
                        }
                        if(flag == 1) {
                            break;
                        }
                    }
                    if(flag == 0){
                        for(int j=0; j <i; j++){
                            System.out.print(str.charAt(j));
                        }
                        System.out.println();//true
                        return;
                    }
                }
            }
            System.out.println(false);//如果子串长度i的所有划分都不满足要求,则返回flase,表示该字符串不能由某个子串的若干倍组成

    }
}


#笔试题目#
全部评论
楼主收到面试通知了吗
点赞 回复 分享
发布于 2018-03-31 13:29
没收到笔试通知是不是相当于默拒了呀?
点赞 回复 分享
发布于 2018-03-31 12:17

相关推荐

评论
点赞
51
分享

创作者周榜

更多
正在热议
更多
# 春招至今,你的战绩如何? #
10911次浏览 93人参与
# 你的实习产出是真实的还是包装的? #
1938次浏览 42人参与
# 巨人网络春招 #
11359次浏览 223人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
7621次浏览 43人参与
# 简历第一个项目做什么 #
31729次浏览 339人参与
# 重来一次,我还会选择这个专业吗 #
433520次浏览 3926人参与
# 米连集团26产品管培生项目 #
6014次浏览 216人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
187185次浏览 1122人参与
# 牛客AI文生图 #
21445次浏览 238人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
152429次浏览 888人参与
# 研究所笔面经互助 #
118956次浏览 577人参与
# 简历中的项目经历要怎么写? #
310324次浏览 4217人参与
# AI时代,哪些岗位最容易被淘汰 #
63764次浏览 826人参与
# 面试紧张时你会有什么表现? #
30508次浏览 188人参与
# 你今年的平均薪资是多少? #
213120次浏览 1039人参与
# 你怎么看待AI面试 #
180105次浏览 1258人参与
# 高学历就一定能找到好工作吗? #
64330次浏览 620人参与
# 你最满意的offer薪资是哪家公司? #
76524次浏览 374人参与
# 我的求职精神状态 #
448113次浏览 3129人参与
# 正在春招的你,也参与了去年秋招吗? #
363477次浏览 2638人参与
# 腾讯音乐求职进展汇总 #
160665次浏览 1112人参与
# 校招笔试 #
471093次浏览 2964人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务