逆置字串問題

2021-10-21 06:40:50 字數 2183 閱讀 3568

這類問題算是比較簡單的了,而我們的思路是從字串兩頭開始,交換內容。在這裡我介紹兩種方法。

1.迴圈的方式

2.遞迴的方式

(1)迴圈的方式很好理解,就是暴力地進行內容的交換,而交換的規則就是從begin和end兩頭進行內容交換

hehehe

e.g. 字串 " l am a student." 我們可以定義乙個指向字串起始位置的指標char * begin和指向字串最後乙個字元的指標char * end,不斷讓兩個交換,同時begin++ ,end–,直到沒有內容需要交換為止

(2)**實現

#include

#include

#include

void

reverse

(char

* begin,

char

* end)

}int

main()

;gets

(arr)

;//使用gets可以獲取一整行的內容

int len=

strlen

(arr)

;//計算出字串長度,從而確定指標end的位置

reverse

(arr, arr + len -1)

;printf

("%s\n"

, arr)

;return0;

}

(1)迴圈的方式也是比較簡單的,對於逆序乙個字串來說,我們可以把問題拆分為只交換字串中第乙個字元與第二個字元。完成這一步後,我們可以認為字串「縮短了」,我們不再考慮字串中第乙個和最後乙個字元,將中間剩下的字元作為乙個新的字串,再進行與之前相同操作的交換。直到字串完全逆序,而這個也是遞迴結束的條件,控制遞迴的深度。

hehehe

e.g. 字串 " l am a student." 我們可以定義乙個指向字串起始位置的指標char * left和指向字串最後乙個字元的指標char * right,讓兩個指標指向的內容交換,然後再呼叫一次逆置函式,但是傳參時,引數是left+1和right-1。當指標相遇或是說中間兩個指標指向同乙個直到沒有內容需要交換為止

(2)**實現

void

reverse

(char

* start,

char

* end)

}int

main()

;gets

(arr)

;int len =

strlen

(arr)

;reverse

(arr, arr + len -1)

;printf

("%s\n"

, arr)

;return0;

}

這個問題就需要涉及一定的演算法。

解決問題的方法:先將乙個字串整體逆序,再將其中的每個單詞逆序

hehehe

e.g. 字串 " l am a student."

1.首先將整個字串逆序————> 「.tnedust a ma l」

2.再將其中每個單詞逆序————> " student. a am l"

就相當於兩步逆序操作。重難點在於第二步逆序時找到合適的逆序時機。就是我們需要找到乙個單詞的起始位置,再找到這個單詞後面緊接的「空格」或者 『/0』然後將其逆序

**實現:

void

reverse

(char

* begin,

char

* end)

}int

main()

;gets

(arr)

;int len =

strlen

(arr)

;//逆序整個字串

reverse

(arr, arr + len-1)

;//尋找每個單詞

char

* begin = arr;

char

* end = arr;

while

(*end!=

'\0'

)printf

("%s\n"

, arr)

;return0;

}

python字串逆置 字串逆置演算法

1,輸人 字串 123456 輸出 654321 注意 字元陣列不等於字串,只有當字元陣列結尾加上結束標誌 0 才是字串。所以字串用字元陣列來初始化時,結尾必須加上 0 比如 初始化字串 char ch 7 如下 include include include define maxsize 100 ...

字串逆置

題目描述 字串 i am a student 逆置為 student a am i 思路 第一次逆置 先將整個字串都逆置 tneduts a ma i 第二次逆置再將每個單詞逆置 student a am i 利用空格找出乙個單詞進行逆置 public class testdemo2 public ...

字串的逆置

1.逆序整個字串 eg 字串為 student a am i 將這個字串逆置之後可以得到 i ma a tneduts 這種逆序的方式就是將整個字串逆置 實現的方式有如下幾種方式 1 include intmy strlen char str else void reverse char str i...