• 反转单词


    将字符串进行如下反转: 如果字符串为 how are you

    则反转为  you are how

    也就是单词反转,但是每个单词内部不变。


    两个解法,第一个是根据空格把每个单词弄出来,保存起来,然后反转就好了

    第二种,先反转整个句子,之后,再对每个单词在进行一次反转。

    代码如下:

    #include <iostream>
    #include <string>
    #include <cassert>
    using namespace std;
    
    void reverseRange(char* str,int begin,int end)
    {
        assert(str != NULL);
        assert(begin>=0);
        assert(end<=strlen(str)-1);
        if(begin>=end)
            return;
        while(begin<=end)
        {
            char temp = str[begin];
            str[begin] = str[end];
            str[end] = temp;
            begin++;
            end--;
        }
        return;
    }
    
    void reverseString(char* str)
    {
        assert(str!=NULL);
        reverseRange(str,0,strlen(str)-1);
        //循环中begin = end+2,为了使循环保持一致,end从-2开始
        int begin=0,end=-2; 
        int i=0; 
        for(i=0; i<strlen(str); i++)
        {
            // i指向空格,那么前一个单词的结尾为i-1
            // 下一个单词的开头为i+1
            if (str[i]==' ')
            {
                begin = end+2;
                end = i-1;
                reverseRange(str,begin,end);
            }
        }
        begin = end+2;
        end = strlen(str)-1;
        reverseRange(str,begin,end);
        return;
    }
    
    
    int main(int arrgc, char* argv[])  
    {  
        char* p = "hello world !";
        char* str = (char*)malloc(sizeof(char)*(strlen(p)+1));
        strcpy(str,p);
        reverseString(str);
        cout<<str;
    free(str);
    return 0; }
  • 相关阅读:
    Spring Boot 7:配置文件信息读取
    Spring Boot 6:自定义filter
    Spring AOP:Java动态代理和CGlib
    Spring AOP:概念
    设计模式(二)---策略模式
    设计模式(一)--装饰模式
    java并发编程实战笔记
    剑指offer java -查找旋转数组的最小数字
    读书计划
    协议初学
  • 原文地址:https://www.cnblogs.com/cyttina/p/2744151.html
Copyright © 2020-2023  润新知