• HankerRank刷题第一天(string类型)


    一共做了三道题,前两道比较简单就不写出来了

    第三道虽然也是个简单题..但对于我这种小菜鸡来说..还是..写不出来的,在看了别人的代码之后知道了思路又自己写出来了。

    题目地址:https://www.hackerrank.com/challenges/two-characters

    大概意思就是给一个字符串,经过操作得到一个字符串是ABAB或者BABA类型的,只能有两个字母并且不能有相邻相同的。然后求最长的这种字符串

    如 beabeefeab 变成babab 长度为5

    题目给的字符串的最大长度是1000,当时想先去掉重复的,再看是否只有两种字符..但这样循环循环也不知道怎么让他停。

    看了别人的代码,才发现完全可以不用纠结这个1000,换一种思路:

    字母一共就26个,完全可以每一种搭配都试一下啊! 最多也就26*26的时间复杂度...

    思路:

    每一种搭配都拿出来放在一个新的字符串中

    看这个字符串是否符合没有相邻相同的要求,不符合继续循环,符合记录下长度继续循环

    等到循环结束,输出最大长度即可。

    #include <cstdio>
    #include <iostream>
    #include <string>
    #include <algorithm>
    #include <cmath>
    
    using namespace std;
    
    int main() {
         string s;
         int n;
         cin>>n;
         cin>>s;
         int result=0;
         for(char x='a';x<='z';x++)
         {
             for(char y='a';y<='z';y++)
             {
                 if(x!=y)
                 {
                     string P="";
                     for(int i=0;i<n;i++)
                     {
                         if(s[i]==x||s[i]==y)
                            P+=s[i];
                     }
                     bool flag=true;
                     for(int i=0;i<P.length()-1;i++)
                     {
                         if(P[i]==P[i+1])
                         {
                            flag=false;
                            break;
                         }
                     }
    
                     if(flag&&P.length()>1)
                     {
                         if(result<P.length())
                            result=P.length();
                     }
                 }
             }
         }
    
         cout<<result<<endl;
    
    }
  • 相关阅读:
    转载: RAID详解[RAID0/RAID1/RAID10/RAID5]
    用户交互式命令:read
    linux下fdisk分区管理、文件系统管理、挂载文件系统等
    linux文件系统下的特殊权限
    find命令详解
    python3中 getpass模块使用
    个人shell积累
    手把手教你利用爬虫爬网页(Python代码)
    数通HCIP-ospf知识点
    HCIE之路--超全ospf思维导图
  • 原文地址:https://www.cnblogs.com/Qmelbourne/p/6730183.html
Copyright © 2020-2023  润新知