CF Sequence Formatting

4187 단어 문자열
제목: Polycarp는 string s에서 공간을 추가하고 제거하여 다음을 보장하고자 합니다.
each comma is followed by exactly one space (if the comma is the last character in the string, this rule does not apply to it), each “three dots” term is preceded by exactly one space (if the dots are at the beginning of the string, this rule does not apply to the term), if two consecutive numbers were separated by spaces only (one or more), then exactly one of them should be left, there should not be other spaces.
input 1,2 ,3,…, 10 output 1, 2, 3, …, 10 input 1,,,4…5……6 output 1, , 4 …5 … …6 input …,1,2,3,… output …, 1, 2, 3, …
분류는 빈칸을 출력해야 하는 경우',, 뒤에 빈칸이 하나 필요합니다...'6개'.사이에 공백이 필요합니다. ","사이에 공백이 필요합니다. 첫 번째 0은 한 번씩 flag의 수치를 업데이트해서 문자 앞의 상황을 결정할 수 없습니다.
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
const int N=300,INF=0x3f3f3f3f;
char s[N];
int main()
{
    gets(s);
    int flag=0;
    for(int i=0;s[i];i++)
    {
        if(s[i]=='.')
        {
            if(flag!=0) printf(" ");
            printf("...");
            i+=2;
            flag=1;
        }
        else if(s[i]>='0'&&s[i]<='9')
        {
            if(flag!=0&&flag!=1) printf(" ");
            if(s[i]=='0'&&(s[i+1]>='0'&&s[i+1]<='9')) continue;
            for(;s[i]>='0'&&s[i]<='9';i++)// 
                printf("%c",s[i]);
            i--;
            flag=2;
        }
        else if(s[i]==',')
        {
            if(flag==3) printf(" ");
            printf("%c",s[i]);
            flag=3;
        }
    }
}

좋은 웹페이지 즐겨찾기