美文网首页
秋招准备-网易秋招笔试题-7

秋招准备-网易秋招笔试题-7

作者: Buyun0 | 来源:发表于2018-08-08 19:30 被阅读0次

    小易喜欢的单词

    小易喜欢的单词具有以下特性:
    1.单词每个字母都是大写字母
    2.单词没有连续相等的字母
    3.单词没有形如“xyxy”(这里的x,y指的都是字母,并且可以相同)这样的子序列,子序列可能不连续。
    例如:
    小易不喜欢"ABBA",因为这里有两个连续的'B'
    小易不喜欢"THETXH",因为这里包含子序列"THTH"
    小易不喜欢"ABACADA",因为这里包含子序列"AAAA"
    小易喜欢"A","ABA"和"ABCBA"这些单词
    给你一个单词,你要回答小易是否会喜欢这个单词(只要不是不喜欢,就是喜欢)。

    输入描述:

    输入为一个字符串,都由大写字母组成,长度小于100

    输出描述:

    如果小易喜欢输出"Likes",不喜欢输出"Dislikes"

    示例1

    输入

    AAA

    输出

    Dislikes

    思路:
    1,首先判断有没有相邻相同的字符;
    2,判断有没有出现次数大于等于4次的单词,因为出现4次必然能组成XX,XX对;
    3,然后每个字符判断一次后面是否有相同的,这里的办法时维护一个长度26的数组代表每个字母出现的值,在没遇到相同字符前,每个遇到的字母的值+1,遇到相同字母后每个遇到的字母的值-4,最后判断,如果最后某个字母的值等于-7(xyxyy),-3(xyxy),-2(xyyxy),就说明有xyxy对。

    
    #include<iostream>
    #include<string.h>
    #include<string>
    #include<ctype.h>
    #include<math.h>
    #include<set>
    #include<map>
    #include<vector>
    #include<queue>
    #include<bitset>
    #include<algorithm>
    #include<time.h>
    using namespace std;
    
    
    
    int main() {
        string s;
        cin >> s;
        vector<int> a(26);
        for (int i = 0; i < 26; i++) {
            a[i] = 4;
        }
        for (int i = 0; i < s.size(); i++) {//检测是否有相邻相等字母
            if (i < s.size() - 1) {
                if (s[i] == s[i + 1]) {
                    cout << "Dislikes" << endl;
                    return 0;
                }
            }
            a[s[i] - 'A'] -= 1;
        }
        for (int i = 0; i < 26; i++) {//检测是否有字母多于3个
            if (a[i] <= 0) {
                cout << "Dislikes" << endl;
                return 0;
            }
        }
    
        for (int i = 0; i < s.size()-1; i++) {
            vector<int> aa(26);
            bool isC = false;
            for (int ii = 0; ii < 26;ii++) {
                aa[ii] = 0;
            }
            for (int j = i+1; j < s.size(); j++) {
                if (s[j] == s[i] && !isC) {
                    isC = true;
                    continue;
                }
                if (!isC) {
                    aa[s[j] - 'A'] += 1;
                }
                if (isC) {
                    aa[s[j] - 'A'] -= 4;
                }
    
            }
            for (int ii = 0; ii < 26; ii++) {
                if (aa[ii] == -2 || aa[ii] == -3 || aa[ii] == -7) {
                    cout << "Dislikes" << endl;
                    return 0;
                }
            }
            
        }
    
        cout << "Likes" << endl;
        return 0;
    
    
    
    }
    
    

    相关文章

      网友评论

          本文标题:秋招准备-网易秋招笔试题-7

          本文链接:https://www.haomeiwen.com/subject/ieoxbftx.html