字符串压缩A-Z
题目要求:
1.连续大写字母缩写,连续字母长度n>=4。
(如:AAABCDEFWW应该转换为AAA-FWW)
2.除了大写字母以外其他的其他字符都忽略。
(输入:2
AAABCDEFWW
AABCDEWWABCD
输出:AAA-FWW
AA-EWWA-D)
#include<iostream>
#include<string>
using namespace std;
int main()
{
string a;
char b;
int i,n,k; //i,k是循环时用的变量,无实际意义。n记录连续字母个数。
while(getline(cin,a))//按行输入,但是忽略了换行符
{
for(i=0;i<a.length();++i)
{
if(a[i]<'A'||a[i]>'Z')
{
getline(cin,a);
break;
}//如果存在非大写字母,则读取下一行,并跳出此循环。
}
for(i=0;i<a.length();++i)
{
if(a[i]>='A'&&a[i]<='Z')
{
if(a[i+1]==a[i]+1)
{
++n;
continue;
} //字符连续时,n自增,先不输出连续的字符,继续提取字符。
else
{
if(n>=3) //若连续字母数量大于等于4
{cout<<a[i-n]<<'-'<<a[i]; //将连续字符按规定输出
n=0; //输出后,清空标记n
}
else
{
for(k=n;k>=0;--k)
{
cout<<a[i-k];//有连续但是不够四个的依次输出
n=0;
}
}
}
}
}
cout<<endl;
}
return 0;
}
浙公网安备 33010602011771号