義烏網(wǎng)站建設(shè)公司三只松鼠搜索引擎推廣
【C語言每日一題】——倒置字符串😎
- 前言🙌
- 倒置字符串🙌
- 總結(jié)撒花💞

? ?
😎博客昵稱:博客小夢
😊最喜歡的座右銘:全神貫注的上吧!!!
😊作者簡介:一名熱愛C/C++,算法等技術(shù)、喜愛運(yùn)動、熱愛K歌、敢于追夢的小博主!
😘博主小留言:哈嘍!😄各位CSDN的uu們,我是你的博客好友小夢,希望我的文章可以給您帶來一定的幫助,話不多說,文章推上!歡迎大家在評論區(qū)嘮嗑指正,覺得好的話別忘了一鍵三連哦!😘
前言🙌
? ? 哈嘍各位友友們😊,我今天又學(xué)到了很多有趣的知識,現(xiàn)在迫不及待的想和大家分享一下!😘我僅已此文,和大家分享【C語言每日一題】——倒置字符串~ 都是精華內(nèi)容,可不要錯過喲!!!😍😍😍
倒置字符串🙌
題目描述:將一句話的單詞進(jìn)行倒置,標(biāo)點不倒置。比如 I like beijing. 經(jīng)過函數(shù)后變?yōu)?#xff1a;beijing. like I
輸入描述:每個測試輸入包含1個測試用例: I like beijing. 輸入用例長度不超過100
輸出描述:依次輸出倒置之后的字符串,以空格分割
示例1
輸入:
I like beijing.
輸出:
beijing. like I
解題思路分析: 😍
- 首先認(rèn)真讀題,分析解題思路。這道題我的做法是先將整個字符串逆置,然后將每一個單詞逆置,就可以得到答案啦。
- 首先是設(shè)計逆置功能函數(shù)。用頭尾指針,依次交換數(shù)值,停止的條件是當(dāng)left >= right。
- 這道題的難點是對每一個單詞逆置的條件把控。定義指針cur,代替arr后面的操作。保障arr不會改變,還能找到字符串的首地址。
- 首先定義一個while循環(huán),當(dāng)cur走到\0時,說明字符串已全部按需操作完畢。創(chuàng)建指針str保留cur,使得每一次都能夠得到單詞字符串的首地址。當(dāng)*cur != ’ ’ && *cur != ‘\0’ 時,就讓指針往后走。遇到空格,說明走到一個單詞的最后面;遇到斜杠0,說明字符串已經(jīng)遍歷完。遇到空格說明已經(jīng)找到一單詞了,再將其逆置即可。每個單詞的操作都是如此。
- 需要注意的是跳出里面的while循環(huán)后,cur++本質(zhì)作用是跳過空格。然后才這樣設(shè)計的。但是有一種特殊情況是當(dāng)數(shù)組遍歷完字符串最后一個單詞,指針來到斜杠0時,就不能跳過斜杠0了,不然可能會導(dǎo)致打印錯誤(字符串打印已斜杠0作為結(jié)束標(biāo)志)。因此,只有當(dāng)cur走到不為斜杠0的條件才需要cur++。
解題源碼分享: 😍
#include<string.h>
#include<stdio.h>
void reverse(char *left, char *right)
{while (left < right){char tem = *left;*left = *right;*right = tem;left++;right--;}
}int main()
{char arr[101] = { 0 };gets(arr);int len = strlen(arr);reverse(arr, arr + len - 1);//當(dāng)遇到\0時,說明字符串已全部按需操作完畢char* cur = arr;while (*cur){//每一個進(jìn)行逆置char* str = cur;while (*cur != ' ' && *cur != '\0'){cur++;}reverse(str, cur - 1);if(*cur != '\0')cur++;}printf("%s", arr);return 0;
}
程序輸出結(jié)果驗證: 😊
總結(jié)撒花💞
? ?本篇文章旨在分享C語言詳解【C語言每日一題】——倒置字符串內(nèi)容。希望大家通過閱讀此文有所收獲!😘如果我寫的有什么不好之處,請在文章下方給出你寶貴的意見😊。如果覺得我寫的好的話請點個贊贊和關(guān)注哦~😘😘😘