• 用较小的代价去除字符串中的空格


    题目:

      用C语言写一个函数,去除字符串中的空格,并返回删除的空格的个数。不允许开辟新的空间,只能申请简单类型的自动变量。时间复杂度要求为O(n)。

    比如:char str[]="dhkak   df d fd     fdjfkda     dfd   ff f  fd da ";

    处理之后: str[]="dhkakdfdfdfdjfkdadfdffffdda";

    返回删除空格的个数为:12
    算法思想:
      先取字符串的长度,然后用前后各一个指针,分别为p,q,使前面一个指向空格,后面一个指向字符,然后用后面的值替换前面的空格,然后用空格替换;p指向下一个空格,q指向下一个值,直到p指向''跳出循环,计算此时字符串的长度,再用处理之前的长度减去处理之后的长度,就可以得到删除的空格的个数。
    代码如下:

     1 #include <stdio.h>
     2 int deleteSpace(char *pstr);
     3 int main()
     4 {
     5     char str[]="dhkak df d fd   fdjfkda  dfd ff  f fd da ";
     6     int spaces;
     7     spaces = deleteSpace(str);
     8     printf("we have removed %d spaces",spaces);
     9     return 0;
    10 }
    11 int deleteSpace(char *pstr)
    12 {
    13     int len1 = strlen(pstr);
    14     char *p,*q;
    15     p=pstr;
    16     while(*p!=' ') p++;
    17     q=p;
    18     while(1)
    19     {
    20         while(*q==' '||*q!='') q++;
    21         if(*q=='')
    22         {
    23             *p=*q;
    24             break;
    25         }
    26         else
    27         {
    28             *p=*q;
    29             *q=' ';
    30             q++;
    31             p++;
    32         }
    33     }
    34     int len2 = strlen(pstr);
    35     int count = len1-len2;
    36     return count;
    37 }

    这样就可以以时间复杂度为O(n),实现这个函数。

  • 相关阅读:
    Xml---->JAXP DOM解析
    java(web)相对路径,绝对路径
    重定向与转发
    struts2之限制文件上传类型
    Struts2之文件上传上限
    Struts2之result中标准结果代码
    struts2之指定处理的请求后缀
    File.rename操作后,获取文件的名称,输出的名称仍为之前的名称
    硬盤掛載
    Java应用打包后运行需要注意编码问题 .
  • 原文地址:https://www.cnblogs.com/houjun/p/4915484.html
Copyright © 2020-2023  润新知