poj 1951 Extra Krunch

本文介绍了一种去除字符串中元音字母的算法实现,并考虑了多种边界情况,如标点符号处理、空格控制等。通过使用C++标准库进行高效编程。

题目大意:去掉元音字母


题目不难,但要考虑的情况很多,标点符号后面要有一个空格,开头不能有空格,不能连续有两个空格。

感觉自己程序写得好烦,但在我不确定的情况下居然ac了吐舌头

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<deque>
#include<string>
#include<string.h>
#include<vector>
#include<stack>
#include<queue>
#include<math.h>
#include<stdlib.h>
#include<map>
#include<set>
#include<time.h>
#include<bitset>
#include<list>
using namespace std;
string s;
int a[27];
int main(){
    a[0]=1;
    a['E'-'A']=1;
    a['I'-'A']=1;
    a['O'-'A']=1;
    a['U'-'A']=1;
    string ans="";
    while (cin>>s)
    {   

        string c="";
        int f=0;int i;
        for (i=0;i<s.size();i++)
        {if (s[i]==','||s[i]=='.'||s[i]=='?')
        {f=1;break;}else if (!a[s[i]-'A']) c+=s[i],a[s[i]-'A']=1;}
        
        if (c!="") ans+=c,ans+=" "; else if (ans!=""&&ans[ans.size()-1]!=' ') ans+=' ';
        if (f) 
        {if (ans[ans.size()-1]==' ') ans=ans.substr(0,ans.size()-1);ans+=s[i],ans+=' ';}
        
    }    
    if (ans[ans.size()-1]==' ') ans=ans.substr(0,ans.size()-1);
    cout<<ans;
    return 0;
}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值