zoukankan      html  css  js  c++  java
  • 字符串逆转-压缩连续空格

    一、算法描述

         给定一个字符串,对于字符串包括多个连续空格的情况,压缩并只保留一个空格,同时以空格隔离的子串逆转。

    二、算法思路

        其本质是字符串逆转的变体,即在字符串逆转的基础上,还要压缩多余空格,这种情况相比单纯的字符串逆转多了一步判断连续空格的条件

    如下代码中,包括单纯的字符串逆转函数,实现比较简单,主要是注意下标的位置

    三、算法代码

    #include <iostream>
    #include <string.h>
    #include <stdio.h>
    #include <stdlib.h>
    using namespace std;
    //字符串逆转
    void ReverseWord(char *s,int left,int right)
    {
        while(left<right)
        {
            char ch=s[left];
            s[left++]=s[right];
            s[right--]=ch;
            
        }
        
    }
    //句子中每个字符串逆转
    void ReverseSentence(char *str)
    {
        int i=0,j=0;
        
        while(str[j]!='')
        {
            if(str[j]==' ')
            {
                ReverseWord(str,i,j-1);
                j++;
                i=j;
            }
            else
                j++;
        }
        ReverseWord(str,i,j-1);
    }
    
    //句子中每个字符串逆转并压缩多余空格,字符串间只保留一个空格
    void Remove_Space_and_Reverse(char *str,char *tstr)
    {
        int i=0,j=0,k=0;
        
        while(str[j]!='')
        {
            if(str[j]==' ')
            {
                tstr[k]=' ';
                ReverseWord(tstr,i,k-1);
                
                while(str[j]==' ')
                    j++;
                k++;
                i=k;
                
            }
            else{            
                tstr[k++]=str[j++];
            }
        }
        //逆转最后一个字符串
        ReverseWord(tstr,i,k-1);
    }
    
    int main()
    {
        char s[256]="abcef     hijklm             nop";
        char *tstr=new char[256];
        memset(tstr,0,sizeof(char)*256);
        Remove_Space_and_Reverse(s,tstr);
        cout<<tstr<<endl;
        return 0;
    }
  • 相关阅读:
    有个表叫杨表(上)
    Codeforces Round #698 (Div. 2) 题解 全部6题
    Leetcode 821. 字符的最短距离
    gitbook mermaid不能渲染问题
    adb命令启动app及查找系统版本号
    git库使用
    excle转html方法
    gitbook插入视频
    xcode使用技巧
    在 Mac 上的“自动操作”工作流程中使用 Shell 脚本操作
  • 原文地址:https://www.cnblogs.com/ballwql/p/4941174.html
Copyright © 2011-2022 走看看