zoukankan      html  css  js  c++  java
  • 反转字符数组中的单词,如“This is a test”,反转后“test a is This”

     

    【问 题】将一个字符数组中的单词顺序反转,要求不借助其它字符数组或者指针链表,保存反转后的字符数组,单词间以空格分隔。

    【思路】先将字符数组全部反转,“This is a test”--> “tset a si sihT”, 再将单词逐个反转,最后得到要求的数组。

    int main(int argc, char* argv[])
    {
       
    char str[]= "  This  is  a  test   ";
       
    char* pstart, *p;
       
    int flag = 1;
       
        printf(
    "before rev: %s\n ", str);
      rev(str, str
    +sizeof(str)-2);        /* 全部反转*/
        printf(
    "frist  rev: %s \n", str);
       
    for(p=pstart=str; ;p++)
       
    {
           
    if ((*p==' ')||(*p==0))        /*调整每个单词*/
           
    {           
               
    if (flag)
               
    {           
                    flag
    = 0;       
                    rev(pstart, p
    -1);
                    printf(
    "rev  word : %s\n
    ", str);
                    pstart
    = p;
                }

               
    if (*p==0)        /* 结尾*/
                   
    break;
            }

           
    else if (flag==0)
           
    {
                pstart
    = p;
                flag
    =1;
            }

        }

        printf(
    "after  rev: %s\n
    ", str);
       
    return 0;
    }


    void  rev(char* pstart, char* pend)  /*反转一个字符串*/
    {
       
    while(pend>pstart)
       
    {
           
    *pend^=*pstart;        /*交换数据内容  */
           
    *pstart^=*pend;
           
    *pend^=*pstart;
           
    ++pstart;
           
    --pend;   
        }

    }


     

  • 相关阅读:
    浮点数
    opencv笔记-GFTTDetector
    有向图与关联矩阵
    亚像素角点
    字符串格式化输出
    字符串表示与转换
    Bresenham算法
    罗德里格斯公式
    模型调参
    jave 逻辑运算 vs 位运算 + Python 逻辑运算 vs 位运算
  • 原文地址:https://www.cnblogs.com/bluewelkin/p/2588833.html
Copyright © 2011-2022 走看看