反轉字符串中的單詞

1、問題描述:

例:I am student    ------>結果爲:student am I

算法思想:

  先將整個字符串反轉一遍,然後在從頭開始,遇到空格的在次進行反轉,就可以實現反轉字符串中的單詞了;


2、代碼實現

#include<stdio.h>
#include<string.h>
#include<ctype.h>


void revStr(char *str, int from, int to);
void finalRev(char *str);

void finalRev(char *str){
    int from = 0;
    int to = 0;

    while(str[to]){
        while(isalpha(str[to])){
            to++;
        }
        revStr(str, from, to-1);
        while(isspace(str[to])){  //針對中間出現多個空格的情況,可以跳躍過去
            to++;
        }
        from = to;
    }
}

void revStr(char *str, int from, int to){
    char tmp;

    while(from < to){
        tmp = str[from];
        str[from++] = str[to];
        str[to--] = tmp;
    }
}

void main(void){
    char str[80];
    char *p = str;
    int strLen;
    int count = 0;
    int i = 0;

    printf("請輸入字符串:\n");
    gets(str);
    strLen = strlen(str);
    revStr(str, 0, strLen-1);
    finalRev(str);

    puts(str);    
}


3、結果截圖

wKiom1ixn6Hw3Q4dAAAVPCgr4DQ769.png-wh_50

算法分析:空間複雜度爲:O(1);




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章