天天看點

簡單入手雙指針——單詞拆分單詞拆分

單詞拆分

題目描述

給定一組字元串,裡面含有許多單詞,每個單詞之間都有一個空格隔開,要求單獨輸出每個單詞

題目分析

通過雙指針算法,一端指着單詞頭,另一端去找單詞尾,找到後傳回,并将頭指向尾,繼續尋找,直到找到末尾為止

代碼實作

#include<bits/stdc++.h>
#include<string.h>
const int N = 1010;
using namespace std; 

int main(){
    // 字元串
    char str[N];
    cin.getline(str, N);
    int len = strlen(str);
    for(int i = 0; i < len; i ++){
        // 從目前單詞開頭開始讀,讀到空格結束
        int j = i;
        while(j < len && str[j] != ' ')   j ++;
        // 逐一輸出目前單詞的字母
        for(int k = i; k < j; k++)  cout << str[k];
        cout << endl;   // 換行
        // 重新定義開頭
        i = j;
    }
    return 0;
}
           

輸入

this is a pig
           

輸出

this
is
a
pig
           

總結

主要運用了雙指針來進行這道題的分析,雙指針基本都是遵循這種結構進行的

gets

方法已經被淘汰了,是以選擇使用了

getline

,當然還有其他一些輸入方式,可自行嘗試

for(int i = 0; i < n; i++){
    while(j = i; check(條件))	j ++;
    // 具體邏輯
}
           

繼續閱讀