zoukankan      html  css  js  c++  java
  • 反转单词

    将字符串进行如下反转: 如果字符串为 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; }
  • 相关阅读:
    Nosql介绍
    linux系统安装mysql
    linux下装tomcat教程
    linux系统下安装jdk教程
    XML解析
    XML 可扩展标记语言
    Oracle——子查询
    数据库——Oracle(增删改查,单行函数,多行函数,多表查询)
    Ubuntu16.04Scrapy爬虫定时任务
    大数据——zookeeper分布式集群管理工具的学习与使用
  • 原文地址:https://www.cnblogs.com/cyttina/p/2744151.html
Copyright © 2011-2022 走看看