列表

详情


NC219745. L1-3压缩

描述

对一段有大小写英文字母和空格构成的字符串进行压缩。我们认为一个单词和另一个单词之间用一个空格分隔,处理方法如下:
1.如果一个单词仅第一个字母是大写英文字母,其余为小写英文字母则认为是一个重要单词。将整个单词压缩为第一个大写字母
2.如果一个单词不是重要单词,则删除这个单词。
3.在对所有单词处理完后,删去所有的空格

输入描述

在一行内输入一个字符串 S (1<=|S|<=100000) |S|表示字符串的长度

输出描述

在一行内输出压缩后的字符串

示例1

输入:

International Collegiate Programming Contest

输出:

ICPC

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C(clang11) 解法, 执行用时: 3ms, 内存消耗: 400K, 提交时间: 2021-03-20 23:25:37

#include<stdio.h>
#include<string.h>
int main()
{
    char a[1000000000],b,c;
    long long d,e,f,g=0,h=0;
  gets(a);
    e=strlen(a);
    for(d=0;d<e;d++)
    {
       if('A'<=a[d]&&a[d]<='Z'&&(d==0||a[d-1]==' '))
       {
           b=a[d];
           g=1;
           
       }
        if(g==1)
        {
            if('A'<=a[d+1]&&a[d+1]<='Z')
                g=0;
            
        }
        if(g==1&&(a[d+1]==' '||a[d+1]=='\0'))
        {
            
            printf("%c",b);
            g=0;
        }
    }
  
return 0;
}

C++(g++ 7.5.0) 解法, 执行用时: 21ms, 内存消耗: 436K, 提交时间: 2023-07-31 16:34:23

#include<bits/stdc++.h>
using namespace std;

int main()
{
    string ch;
    while(cin>>ch)
    {
        int flag=1;
        if(ch[0]>='A'&&ch[0]<='Z')
        {
            for(int i=1;i<ch.size();i++)
            {
                if(ch[i]>='A'&&ch[i]<='Z')
                {
                    flag=0;
                    break;
                }
            }
            if(flag) cout<<ch[0];
        }
    }
}

C++(clang++ 11.0.1) 解法, 执行用时: 20ms, 内存消耗: 448K, 提交时间: 2023-04-13 19:39:26

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=100010;
int main()
{
	string s;
	while(cin>>s)
	{
		int c=0;
		for(int i=1;i<s.size();i++)
		{
			if(s[i]>='A'&&s[i]<='Z')
			{
				c++;
			}
		}
		if(c==0&&s[0]>='A'&&s[0]<='Z')cout<<s[0];
	}
	return 0;
}

上一题