最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言多種方法實現(xiàn)一個函數(shù)左旋字符串中K個字符

 更新時間:2021年10月22日 16:31:13   作者:高郵吳少  
這篇文章主要為大家介紹了C語言多種方法實現(xiàn)一個函數(shù),可以左旋字符串中K個字符,文中附含詳細(xì)的示例講解,有需要的朋友可以借鑒參考下

前言

今天看到一個有趣的筆試題:實現(xiàn)一個函數(shù),可以左旋字符串中的k個字符。示例如下:
ABCD左旋一個字符得到BCDA
ABCD左旋兩個字符得到CDAB

提示:以下是本篇文章正文內(nèi)容,下面案例可供參考

法一、將左旋1次這個動作執(zhí)行k次

這個方法的思路我來簡單介紹一下:
現(xiàn)有1個字符串a(chǎn)bcd

在這里插入圖片描述

我們將a移出來,然后bcd前會空出一個位置

在這里插入圖片描述

將bcd向前移動一個位置,最后把a(bǔ)放入最后一個位置,即可完成1次左旋

在這里插入圖片描述

在這里插入圖片描述

那么1次完成了,對于左旋k次呢?實際上也就是把上述操作再執(zhí)行k-1次。
代碼如下(示例):

#include<stdio.h>
#include<assert.h>
void left_move(char*arr, int k)//arr傳過來的是首元素地址,你可以用一個指針去接收
{
    assert(arr);
	int i = 0;
	int len = strlen(arr);//計算arr的長度
	for (i = 0;i < k;i++)
	{
		
		int j = 0;
		char tmp = *arr;
		for (j = 0;j < len - 1;j++)
		{
			arr[j] = arr[j + 1];//arr[j]=*(arr+j)
		}
		arr[len - 1] = tmp;
	}
}
int main()
{
	int x = 0;
	char arr[] = "abcd";
	printf("輸入你想左旋幾個字符:\n");
	scanf("%d", &x);
	left_move(arr, x);
	printf("%s\n", arr);
}

ps:這里多使用一個assert是為了防止函數(shù)傳過來的是空指針,會進(jìn)行斷言,如果傳的是空指針,系統(tǒng)會報錯

法二、多次逆序字符串

我們以ABCDEF左旋2次進(jìn)行舉例:

在這里插入圖片描述

左旋2次也就是把AB移動到CDEF后面,下面看我操作,先將AB、CDEF分為兩個組

在這里插入圖片描述

將兩個組分別逆序

在這里插入圖片描述

最后整體逆序得到最終結(jié)果CDEFAB

在這里插入圖片描述

那么左旋k次也就是把2變成k即可,整體仍然是這3個步驟,非常方便

代碼如下(示例):

#include<stdio.h>
#include<assert.h>
void reverse(char*l, char*r)//逆序函數(shù)
{
	assert(l&&r);
	while (l < r)
	{
		char tmp = *l;
		*l = *r;
		*r = tmp;
		l++;
		r--;
	}
}
void left_move(char*arr, int k)
{
	assert(arr);
	int len = strlen(arr);
	reverse(arr,arr+k-1);//第一個組逆序
	reverse(arr+k,arr+len-1);//第二個組逆序
	reverse(arr,arr+len-1);//整體逆序
}
int main()
{
	int x = 0;
	char arr[] = "abcdef";
	printf("輸入你想左旋幾個字符:\n");
	scanf("%d", &x);
	left_move(arr, x);
	printf("%s\n", arr);
}

ps:關(guān)于每一次的逆序函數(shù):以abcd舉例,就是a和d換位,b和c換位,得到dcba,然后這樣的逆序進(jìn)行三次即可得到所謂的左旋。

以上就是C語言多種方法實現(xiàn)一個函數(shù)左旋字符串中K個字符的詳細(xì)內(nèi)容,更多關(guān)于多種方法實現(xiàn)一個函數(shù)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C語言的字符函數(shù)和字符串函數(shù)詳解

    C語言的字符函數(shù)和字符串函數(shù)詳解

    這篇文章主要為大家介紹了C語言的字符函數(shù)和字符串函數(shù),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • C語言實現(xiàn)游戲VIP停車場管理系統(tǒng)

    C語言實現(xiàn)游戲VIP停車場管理系統(tǒng)

    這篇文章主要介紹了C語言實現(xiàn)游戲VIP停車場管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • C語言實現(xiàn)的循環(huán)單鏈表功能示例

    C語言實現(xiàn)的循環(huán)單鏈表功能示例

    這篇文章主要介紹了C語言實現(xiàn)的循環(huán)單鏈表功能,結(jié)合實例形式分析了基于C語言實現(xiàn)的循環(huán)單鏈表定義、創(chuàng)建、添加、刪除、打印、排序等相關(guān)操作技巧,需要的朋友可以參考下
    2018-04-04
  • C語言用Easyx繪制圍棋和象棋的棋盤

    C語言用Easyx繪制圍棋和象棋的棋盤

    這篇文章主要為大家詳細(xì)介紹了C語言用Easyx繪制圍棋和象棋的棋盤,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 基于MFC和OpenCV實現(xiàn)角點檢測

    基于MFC和OpenCV實現(xiàn)角點檢測

    這篇文章主要為大家詳細(xì)介紹了基于MFC和OpenCV實現(xiàn)角點檢測,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • Linux下使用C/C++進(jìn)行UDP網(wǎng)絡(luò)編程詳解

    Linux下使用C/C++進(jìn)行UDP網(wǎng)絡(luò)編程詳解

    UDP 是User Datagram Protocol 的簡稱,中文名是用戶數(shù)據(jù)報協(xié)議,是一種無連接、不可靠的協(xié)議,本文主要介紹了如何在Linux下使用C/C++進(jìn)行UDP網(wǎng)絡(luò)編程,有需要的可以了解下
    2024-10-10
  • Vs2022環(huán)境下安裝低版本.net framework的實現(xiàn)步驟

    Vs2022環(huán)境下安裝低版本.net framework的實現(xiàn)步驟

    本文主要介紹了Vs2022環(huán)境下安裝低版本.net framework的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • C語言動態(tài)規(guī)劃多種背包問題分析講解

    C語言動態(tài)規(guī)劃多種背包問題分析講解

    背包問題(Knapsack problem)是一種組合優(yōu)化的NP完全問題。問題可以描述為:給定一組物品,每種物品都有自己的重量和價格,在限定的總重量內(nèi),我們?nèi)绾芜x擇,才能使得物品的總價格最高
    2022-04-04
  • C語言基于EasyX繪制時鐘

    C語言基于EasyX繪制時鐘

    這篇文章主要為大家詳細(xì)介紹了C語言基于EasyX繪制時鐘,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C++改變編程入口為main函數(shù)

    C++改變編程入口為main函數(shù)

    這篇文章主要介紹了C++改變編程入口為main函數(shù)的方法的相關(guān)資料,需要的朋友可以參考下
    2015-06-06

最新評論

嘉祥县| 闵行区| 靖安县| 大石桥市| 乌什县| 贡嘎县| 孟村| 缙云县| 连平县| 张家界市| 华阴市| 芒康县| 唐山市| 青铜峡市| 佛坪县| 伊宁市| 南开区| 喜德县| 晋宁县| 芜湖市| 台中市| 蓝田县| 那曲县| 库车县| 黔东| 顺昌县| 恩施市| 涞源县| 溆浦县| 阿合奇县| 射洪县| 元江| 江山市| 拜泉县| 洛川县| 东台市| 从江县| 嘉善县| 资源县| 玉田县| 常熟市|