2017秋招编程题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jeffleo/article/details/77418296

1. 01串问题(网易内推批)

如果一个01串任意两个相邻位置的字符都是不一样的,我们就叫这个01串为交错01串。例如: “1”,”10101”,”0101010”都是交错01串。
小易现在有一个01串s,小易想找出一个最长的连续子串,并且这个子串是一个交错01串。小易需要你帮帮忙求出最长的这样的子串的长度是多少。

输入描述:

输入包括字符串s,s的长度length(1 ≤ length ≤ 50),字符串中只包含’0’和’1’

输出描述:

输出一个整数,表示最长的满足要求的子串长度。

输入例子1:

111101111

输出例子1:

3

解:

public static int solve(){
    Scanner sc = new Scanner(System.in);
    String str = sc.next();

    if (str.length() < 1 || str.length() > 50) {
        return 0;
    }

    char[] chars = str.toCharArray();
    int tmp = 1, res = 1;
    for (int i = 0; i < str.length()-1; i++) {
        if (chars[i] != chars[i+1]) {
            tmp++;
            res = res < tmp ? tmp : res;
        } else {
            tmp = 1;
        }
    }

    return res;
}

需要注意的是:1111111算1个

2. 彩色的砖块

小易有一些彩色的砖块。每种颜色由一个大写字母表示。各个颜色砖块看起来都完全一样。现在有一个给定的字符串s,s中每个字符代表小易的某个砖块的颜色。小易想把他所有的砖块排成一行。如果最多存在一对不同颜色的相邻砖块,那么这行砖块就很漂亮的。请你帮助小易计算有多少种方式将他所有砖块排成漂亮的一行。(如果两种方式所对应的砖块颜色序列是相同的,那么认为这两种方式是一样的。)
例如: s = “ABAB”,那么小易有六种排列的结果:
“AABB”,”ABAB”,”ABBA”,”BAAB”,”BABA”,”BBAA”
其中只有”AABB”和”BBAA”满足最多只有一对不同颜色的相邻砖块。

输入描述:

输入包括一个字符串s,字符串s的长度length(1 ≤ length ≤ 50),s中的每一个字符都为一个大写字母(A到Z)。

输出描述:

输出一个整数,表示小易可以有多少种方式。

输入例子1:

ABAB

输出例子1:

2

代码

import java.util.Scanner;
import java.util.HashSet;
public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        char[] array = sc.next().toCharArray();
        if (array.length < 1 || array.length > 50) {
            System.out.println(0);
        }
        HashSet<Character> set = new HashSet<Character>();
        for (int i = 0; i < array.length; i++) {
            set.add(array[i]);
        }
        if (set.size() > 2) {
            System.out.println(0);
        } else {
            System.out.println(set.size());
        }
    }
}

猜你喜欢

转载自blog.csdn.net/jeffleo/article/details/77418296