首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C 語言字符串單詞逆序:將 "student a am i" 轉為 "i am a student"

     編輯:關於C語言

演算法:兩次反轉法

  1. 整體反轉字符串:"i ma a tneduts"
  2. 逐個單詞反轉:"i am a student"

代碼實現

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

void swap(char *a, char *b) { char t=*a; *a=*b; *b=t; }

void reverse(char *s, int l, int r) {
    while (l < r) swap(&s[l++], &s[r--]);
}

int main() {
    char str[] = "student a am i";
    int len = strlen(str);
    reverse(str, 0, len-1); // 整體反轉
    int start = 0;
    for (int i=0; i<=len; i++) {
        if (str[i]==' ' || str[i]=='\0') {
            reverse(str, start, i-1); // 單詞反轉
            start = i+1;
        }
    }
    printf("%s\n", str); // i am a student
    return 0;
}

關鍵點

  • 原地操作,空間 O(1)。
  • 時間 O(n),兩次線性掃描。
  • 處理多空格、前後空格需額外邏輯。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved