HDU 1039[Easier Done Than Said?] 字符串处理

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1039

题目大意:给一个字符串,看是否符合密码的要求。

规则:
1.至少有1个元音字母。
2.不能有3个连续的元音字母或辅音字母
3.不能有相同的字母连续出现(除了ee,oo)

关键思想:耐心地处理字符串

代码如下:

//可优化
#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;
string t;

bool isv(char a){
	return a==‘a‘||a==‘e‘||a==‘i‘||a==‘o‘||a==‘u‘;
}
bool rule1(char *a){
	return strchr(a,‘a‘)!=NULL||strchr(a,‘e‘)!=NULL||strchr(a,‘i‘)||strchr(a,‘o‘)||strchr(a,‘u‘);
}
bool rule(char *a){
	int b[2]={0,0};//b[0]为连续元音数,b[1]为连续辅音数。
	for(int i=0;i<t.size();i++){
		if(isv(a[i]))b[0]++,b[1]=0;
		else  b[1]++,b[0]=0;
		if(b[0]>=3||b[1]>=3)return false;
		if (i>0)if(a[i-1]==a[i]&&a[i]!=‘e‘&&a[i]!=‘o‘){
			return false;
		}
		else {
		if(i+1<t.size())
			if(a[i-1]==a[i]&&a[i]==a[i+1])return false;
		}
	}
	for(int i=1;i<t.size();i++){

	}
	return true;
}
int main(){
	while(cin>>t&&t!="end"){
		char a[102];
		memset(a,0,sizeof(a));
		strncpy(a,t.c_str(),t.size());//因为后面用到函数要求char *,所以把字符串转化成字符数组。
		if(rule1(a)&&rule(a))
		cout<<"<"<<a<<"> is acceptable."<<endl;
		else cout<<"<"<<a<<"> is not acceptable."<<endl;
	}
	return 0;
}

  

时间: 2024-10-13 01:47:35

HDU 1039[Easier Done Than Said?] 字符串处理的相关文章

hdu 1039 - Easier Done Than Said?

题目:给你一个小写字符串,判断是否安全,安全规则如下: 1.包含元音字母:2.相邻3个元素不能都是元音或辅音:3.连续2个字母相同之能是o或e. 分析:简单题.直接模拟即可. 说明:今天有点累╮(╯▽╰)╭,要学的东西好多( ⊙ o ⊙ )啊! #include <algorithm> #include <iostream> #include <cstdlib> #include <cstring> #include <cstdio> #incl

HDU 2594 Simpsons’ Hidden Talents (字符串-KMP)

Simpsons' Hidden Talents Problem Description Homer: Marge, I just figured out a way to discover some of the talents we weren't aware we had. Marge: Yeah, what is it? Homer: Take me for example. I want to find out if I have a talent in politics, OK? M

hdu 4119 Isabella&#39;s Message【字符串模拟】

题目链接:http://write.blog.csdn.net/postedit 自我感觉比较麻烦 #include<stdio.h> #include<string.h> #include<algorithm> #include<iostream> #include<string> #include<map> using namespace std; const int maxh=100+10; const int maxe=100

HDU 11488 Hyper Prefix Sets (字符串-Trie树)

H Hyper Prefix Sets Prefix goodness of a set string is length of longest common prefix*number of strings in the set. For example the prefix goodness of the set {000,001,0011} is 6.You are given a set of binary strings. Find the maximum prefix goodnes

hdu 4850 Wow! Such String!(字符串处理,yy)

题目 参考了博客http://blog.csdn.net/u013368721/article/details/37575165 //用visit[26][26][26][26]来判断新家新区的子母河前三个组合而成的4个字符的串是否和之前的重复. //再加上最初三个字符,所以,总共有26*26*26*26+3的长度. /* //以下复制自博客http://blog.csdn.net/u013368721/article/details/37575165 题目大意:给你一个整数n,让你输出一个字符

hdu 4119 Isabella&#39;s Message 【字符串处理】

Isabella's Message Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2098    Accepted Submission(s): 614 Problem Description Isabella and Steve are very good friends, and they often write letters

字符串 HDU 1039

规则: 1.必须至少包含一个元音字母.a e i o u 2.不能包含三个连续元音或者连续辅音字母. 3.不能包含两个连续字母,除了'ee'和'oo'. PS:字母个数(1<= N <=20). #define _CRT_SECURE_NO_DEPRECATE #include <stdio.h> #include <stdlib.h> #include <string.h> int is_vowel(char strIn) { if(strIn == 'a

HDU 1039(字符串判断 **)

题意是检查一个字符串是否满足三个条件: 一.至少有一个元音字母.二.不能出现三个连续的元音或三个连续的辅音.三.除了 ee 和 oo 外不能出现两个连续相同字母. 若三个条件都能满足,该字符串满足条件,有一个条件不满足则该字符串不满足条件. 但是这道题的数据......一定有元音字母,长度一定不少于 3.省去很多麻烦...... 代码如下: 1 #include <bits/stdc++.h> 2 using namespace std; 3 int main() 4 { 5 int len;

HDU ACM 1039 Easier Done Than Said? 水题

分析:判断密码是否安全. 三个条件:至少一个元音字母,连续三个字母不能同时为元音或辅音,连续两个字母不能相同,但"ee"和"oo"除外. #include<iostream> using namespace std; bool isyuan(char c) { return c=='a' || c=='e' || c=='i' || c=='o' || c=='u'; } bool judge(char a[]) { int i,l; l=strlen(