首页 > 其他 > 详细

codeforces A. Punctuation 解题报告

时间:2014-01-25 18:53:47      阅读:373      评论:0      收藏:0      [点我收藏+]

题目链接:http://codeforces.com/problemset/problem/147/A

题目意思:给定一篇文章,需要对这篇文章进行编辑,使得:(1)两个单词之间有一个空格分开  (2)标点符号前面(, . ! ?)没有空格,即单词后面直接紧跟着这个标点  (3)标点符号后面只有一个空格。

      恶心的字符串处理。特别要注意,当出现类似   wery   ,   weyriu    的形式时的处理方法。由于对于标点符号的处理,我是把该符号+空格输出,所以对于这种情况,再把空格都过滤了的情况下,仅当紧跟着空格后面的那个字符不能为标点符号而是小写字母并且该空格前面有一个空格的时候,才输出空白符。

    

bubuko.com,布布扣
 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstdlib>
 4 #include <cstring>
 5 using namespace std;
 6 
 7 const int maxn = 1e4 + 5;
 8 char s[maxn];
 9 
10 int main()
11 {
12     int i, j, len;
13     while (gets(s))
14     {
15         len = strlen(s);
16         for (i = 0; i < len; i++)
17         {
18             if (s[i] == \n)
19                 break;
20             if (s[i] >= a && s[i] <= z)
21                 printf("%c", s[i]);
22             else if (s[i] == . || s[i] == , || s[i] == ! || s[i] == ?)
23                 printf("%c ", s[i]);
24             else 
25             {
26                 j = i;
27                 while (s[i] ==   && i < len)
28                     i++;
29                 if (i < len)
30                 {
31                     if (s[j] ==   && (s[j-1] >= a && s[j-1] <= z) && (s[i] != . && s[i] != , && s[i] != ! && s[i] != ?))    // 特别要注意的情况!!
32                         printf(" ");
33                     i--;
34                 }
35             }
36         }
37         printf("\n");
38     }
39     return 0;
40 }
41     
bubuko.com,布布扣

codeforces A. Punctuation 解题报告

原文:http://www.cnblogs.com/windysai/p/3533214.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!