81B

模拟 字符串必须先清零,要不会出现玄学的问题

#include<iostream>
#include<cstdio>
using namespace std;
string s,S;
int main()
{
    s="";S="";
    getline(cin,S,'
');
    bool flag=false;
    for(int i=0;i<S.length();i++)
    {
//        cout<<S[i];
        if(S[i]!=' ') flag=false;
        if(S[i]==' '&&!flag&&(S[i-1]!='.'&&S[i-1]!=','&&S[i-1]!=' '))
        {
            for(int j=i+1;j<S.length();j++)
            {
                if(S[j]!=' '&&S[j]>='0'&&s[j]<='9')
                {
                    flag=true;
                    break;
                } 
                else if(S[j]!=' '&&(S[j]=='.'||S[j]==','))
                {
                    flag=false;
                    break;
                }            
            }    
            if(flag) s+=' ';
        }
        if(S[i]!=' ') s+=S[i];
    }
//    cout<<s<<endl;
    int f=0;
    for(int i=0;i<s.length();i++)
    {        
        if(f==3||s[i]!='.') 
        {
            f=0;
        }
        if(f==0&&s[i]=='.'&&s[i-1]!=','&&i!=0) 
        {
            f++;
            cout<<" ";
        } else
        if(s[i]=='.') f++;
        cout<<s[i];            
        if(s[i]==','&&i!=s.length()-1) 
        {
            cout<<" ";
        }
    }
    return 0;
}
原文地址:https://www.cnblogs.com/19992147orz/p/6054364.html