• 小易喜欢的单词


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

    输出描述:
    如果小易喜欢输出"Likes",不喜欢输出"Dislikes"
    输入例子1:
    AAA
    输出例子1:
    Dislikes 
    #include <iostream>
    #include <string>
    #include <vector>
    using namespace std;
    
    int main()
    {
    	string a;
    	cin>>a;
    	if(1==a.size()){
    		cout<<"Dislikes"<<endl;
    		return 0;
    	}
    	vector<int>flag(a.size());
    	//下面的for循环只到a.length()-2,所以额外判断a.length()-1
    	if (a[a.length()-1]<'A' || a[a.length()-1]>'Z') {
    		cout<<"Dislikes"<<endl;
    		return 0;
    	}
    
    	for (int i=0; i<a.length()-1; i++) {
    
    		if (a[i]<'A' || a[i]>'Z') {//是否都是大写字母
    			cout<<"Dislikes"<<endl;
    			return 0;
    		}
    
    		if ( a[i]==a[i+1]) {//是否有连续相等字母
    			cout<<"Dislikes"<<endl;
    			return 0;
    		}
    		int cnt=1;
    		
    	    //相等过的字母不再参与第二次比较
    		if(flag[i]!=1)
    		{
    			for (int j=i+1;j<a.length(); j++) {//将只出现一次的字母替换为‘0’,如THETXH替换为TH0T0H
    				if (flag[j]!=1&&a[i]==a[j]){
    					flag[j]=1;
    					cnt++;
    				}			
    			}
    			if(1==cnt)
    				a.replace(i, 1, "0");//i的取值[0,a.length()-2]
    		}				
    		
    	}
    
    	//将为'0'字符的删掉,变成THTH
    	for (int i=0; i<a.length(); i++) {
    		if(a[i]=='0'){
    			a.erase(i,1);
    			i=i-1;//删除之前i+1的位置的字母移动到了第i个位置,所以接下来循环理应继续比较第i个位置
    		}
    	}
    	int j=0;
    	for (int k=0;k<a.size();k++)
    	{
    		//找出跟第0个位置一样的字符,记住它位置	
    		for (int i=k+1; i<a.length(); i++) {
    			if (a[i]==a[k]) {
    				j=i;
    				break;
    			}
    		}
    		//判断每一次字符串是不是重复出现
    		for (int i=k+1; i<j; i++) {
    			if(i-k+j<a.size()&&a[i]==a[i-k+j]){
    				cout<<"Dislikes"<<endl;
    				return 0;
    			}
    		}		
    	}
    	cout<<"Likes"<<endl;
    	return 0;
    }


  • 相关阅读:
    末学者笔记--KVM虚拟机管理(2)
    末学者笔记--OpenStack介绍(1)
    末学者笔记--openstack共享组件:rabbitmq(3)
    末学者笔记--KVM虚拟化(1)
    末学者笔记--Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署静态网站
    末学者笔记--Gitlab(二)
    末学者笔记--Git介绍(一)
    末学者笔记--Python模块
    末学者笔记--Python函数三玄
    末学者笔记--Python函数二玄
  • 原文地址:https://www.cnblogs.com/fushuixin/p/7413203.html
Copyright © 2020-2023  润新知