PAT乙级-1043. 输出PATest(20)

1.题目

PAT乙级-1043. 输出PATest(20)_第1张图片

2.分析过程

整个题目不难,就是需要统计出PATest字符串中各个字母出现的次数,然后按照递减并且顺序的方式进行输出。

3.代码

#include 
#include 
using namespace std;

int main() {

  string s;
  int a=0, b=0, c=0, d=0, e=0, f=0;// 声明六个变量分别统计六个字母出现的次数 
  cin >> s;
  int lena = s.length();
  for (int i = 0; i < lena; i++)
  {
    if (s[i] == 'P')a++;
    else if (s[i] == 'A') b++;
    else if (s[i] == 'T')c++;
    else if (s[i] == 'e')d++;
    else if (s[i] == 's')e++;
    else if (s[i] == 't')f++;
  }

  for (int i = 0; i < lena; i++)
  {
    //不能只写if(a--),因为a小于0时if(a--)也成立
    if (a-->=1)
    {
        cout<<"P";
    }
    if (b-->=1)
    {
        cout<<"A";
    }
    if (c-->=1)
    {
        cout<<"T";
    }
    if (d-->=1)
    {
        cout<<"e";
    }
    if (e-->=1)
    {
        cout<<"s";
    }
    if (f-->=1)
    {
        cout<<"t";
    }
  }
  return 0;
}

4.我㞞了

如果没有这位老哥点醒我,我恐怕还在冥思苦想一些数据结构的美妙,还在不停想——呀,这有一个队列啊,啊,那有一个集合,诶?这里是不是一个栈?这道题让我明白了什么是大道至简。
感谢这位老哥

你可能感兴趣的:(C++,Algorithm)