• 面试题4:替换空格


    题目链接:http://ac.jobdu.com/problem.php?pid=1510

    思路:要得到替换后的字符串,显然可以创建一个新的字符串,利用两个指针来来完成操作。假如要求在原字符串上进行替换,

    我们只能从后往前遍历原字符串,同时更新得到替换后的字符串。具体方法是,先遍历一遍字符串,记录下有多少个空格,从

    而可以计算出替换后的字符串长度(一个空格增加两个字符长度)。利用两个下标,一个初始化原字符串的结尾,一个初始化

    为替换后的字符串的结尾。当前者不为空格时,直接复制给后者,然后都向前更新一位。前者为空格时,对应更新后者的三个

    字符。当下标相同时,证明空格已经替换完了。

    小知识:

    在网络编程中,如果URL(统一资源定位器)参数中含有特殊字符,如空格、'#'等,可能导致服务器端无法获取正

    确的参数值。我们需要将这些特殊符号转换成服务器可以识别的字符。转换规则是在'%'后面跟上ASCII码的两位16进制表示。

    注意:

    1、利用scanf输入字符串时,会忽略行开头的所有空格字符,并以空格,制表符,换行符作为结束输入标志,换行符残留在缓冲区

    2、使用getchar可以读取scanf语句执行后,缓冲区留下的换行符。

    3、gets读入以任何字符开始的字符串,以换行符结束,但之后会丢弃换行符并以''代替。

    4、c语言里提供了清空缓冲区的函数fflush(stdin).

    5、使用格式控制scanf("%[^ ]", string),自己取出缓冲区的残留数据。

    code:

     1 #include <cstring>
     2 #include <cstdio>
     3 using namespace std;
     4 const int MAXN = 1000005;
     5 char myStr[MAXN];
     6 int main()
     7 {
     8     while (gets(myStr) != NULL)
     9     {
    10         int numOfSp = 0;    // 记录空格数量
    11         int len = strlen(myStr);
    12         for (int i = 0; i < len; ++i)
    13         {
    14             if (myStr[i] == 32)
    15             {
    16                 ++numOfSp;
    17             }
    18         }
    19         int i = len;
    20         int j = len + numOfSp * 2;
    21         while (i != j)
    22         {
    23             // 不是空格直接复制
    24             if (myStr[i] != 32) myStr[j--] = myStr[i--];
    25             // 是空格进行替换
    26             else
    27             {
    28                 myStr[j--] = '0';
    29                 myStr[j--] = '2';
    30                 myStr[j--] = '%';
    31                 i--;
    32             }
    33         }
    34         puts(myStr);
    35     }
    36     return 0;
    37 }
  • 相关阅读:
    耐性4/21
    吃枸杞上火4/11
    metro style app 的程序构成 以c# 为例 GIS
    ListView 和 GridView ————转 GIS
    最大程度地利用像素,适应视图状态的变更___转 GIS
    metro style 里面的控件一览 以 Windows.UI.Xaml.Controls空间 GIS
    Windows 8里的标准化输入 GIS
    漫游应用程序数据 GIS
    FlipView 知识准备 GIS
    Data Binding Notifications绑定通知 GIS
  • 原文地址:https://www.cnblogs.com/ykzou/p/4401646.html
Copyright © 2020-2023  润新知