亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用C語言編程C++旋轉字符操作串

發布時間:2021-09-28 10:42:40 來源:億速云 閱讀:179 作者:iii 欄目:開發技術

這篇文章主要介紹“如何使用C語言編程C++旋轉字符操作串”,在日常操作中,相信很多人在如何使用C語言編程C++旋轉字符操作串問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何使用C語言編程C++旋轉字符操作串”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

目錄
  • 旋轉字符串

    • 字符串左旋

    • 題前認知:

    • 暴力移位:

    • 三步翻轉:

  • 判斷字符串旋轉

    • 題前認知

    • 字符串追加判斷

旋轉字符串

字符串左旋

實現一個函數,可以左旋字符串中的k個字符。

例如:

ABCD左旋一個字符得到BCDA

ABCD左旋兩個字符得到CDAB

題前認知:

一個字符串如果就定死了。eg:char arr[]=“dfdf”什么的那多沒意思,一點都沒有人機交互的感覺,(雖然現在人機交互適合個體,不適合集群,但也是比死板的定死字符串舒服)

所以字符串得是我們可輸入的,才有可玩性,玩的不盡性就循環

暴力移位:

#include<stdio.h>
#include<string.h>
char* turn_left(char* arr, int num)
{
	int len = strlen(arr);
	int i = 0;
	//左旋數是多少就進行幾次移位
	for (i = 0; i < num; i++)
	{
		//每次移位就是單次左旋
		int j = 0;
		char tmp = arr[0];//每次都把首元素存起來
		for (j = 0; j < len-1; j++)
		{			
			arr[j] = arr[j + 1];			
		}
		arr[len-1] = tmp;//把存起來的首元素放到最后一位
	}
	return arr;
}
int main()
{
	char arr[100] = {0};
	int num = 0;
	while (1)
	{
		printf("請輸入想要旋轉的字符串:>");
		gets(arr);
		printf("請輸入想要左旋數:>");
		scanf("%d", &num);
		getchar();//這個的作用是清空緩沖區,因為每次scanf會有一個\n,不清空的話
		//下一次到了gets,他會認為\n是我們打進去的,所以scanf之后必須清空緩沖區
		printf("左旋字符串為:%s\n", turn_left(arr, num));
	}
	return 0;
}

輸出結果

如何使用C語言編程C++旋轉字符操作串

三步翻轉:

#include<stdio.h>
#include<string.h>
#include<assert.h>
void reverse(char* head, char* tail) //字符串逆序
{
	assert(head && tail);//斷言阻止空指針
	char tmp = 0;
	char* ptmp = &tmp;
	while (head<tail)
	{
		tmp = *head;
		*head = *tail;
		*tail = tmp;
		head++;
		tail--;
	}
	return 0;
}
char* turn_left(char* arr, int num)
{
	assert(arr);
	int len = strlen(arr);
	if (len)
	{
		int n = num % len;           //防止num會越界操作,所以必須是num模len才可,還要保證len不為0
		reverse(arr, &arr[n - 1]);          //逆序左邊
		reverse(&arr[n], &arr[len - 1]);  //逆序右邊
		reverse(arr, &arr[len - 1]);      //逆序整體
		return arr;
	}
	else
	{
		return arr;
	}
}
int main()
{
	char arr[100] = {0};
	int num = 0;
	while (1)
	{
		printf("請輸入想要旋轉的字符串:>");
		gets(arr);
		printf("請輸入想要左旋數:>");
		scanf("%d", &num);
		getchar();//這個的作用是清空緩沖區,因為每次scanf會有一個\n,不清空的話
		//下一次到了gets,他會認為\n是我們打進去的,所以scanf之后必須清空緩沖區
		printf("左旋字符串為:%s\n", turn_left(arr, num));
	}
	return 0;
}

如何使用C語言編程C++旋轉字符操作串

如何使用C語言編程C++旋轉字符操作串

還有3種方法但那三種就需要很強的數學功底了,具體的我也看不懂他怎么證明的數學公式,就不看了。哈哈哈

判斷字符串旋轉

寫一個函數,判斷一個字符串是否為另外一個字符串旋轉之后的字符串。

例如:給定s1 =AABCD和s2 = BCDAA,返回1

給定s1=abcd和s2=ACBD,返回0.

AABCD左旋一個字符得到ABCDA

AABCD左旋兩個字符得到BCDAA

AABCD右旋一個字符得到DAABC

題前認知

大家現在應該知道我干啥,沒錯我倡導交互,兩個字符串都是我們寫

字符串追加判斷

(面試的時候能用庫函數就用庫函數)

什么叫字符串追加判斷呢 例如asdfg這個字符串

如何使用C語言編程C++旋轉字符操作串

#include<stdio.h>
#include<string.h>
#include<assert.h>
int is_left_move(char* str1, char* str2)
{	
	assert(str1 && str2);
	int len1 = strlen(str1);
	int len2 = strlen(str2);
	//長度不同就肯定不是旋轉字符串
	if (len1 - len2)
		return 0;
	//在arr1字符串中追加一個自己
	strncat(str1, str1, len1);
	//判斷判斷的那個字符串是不是追加字符串的子串
	char* ret = strstr(str1, str2);
	if (ret == NULL)
		return 0;
	else
		return 1;
}
int main()
{
	char arr1[50] = {0};//有足夠的空間
	char arr2[50] = {0};
	while (1)
	{
		printf("請輸入字符串:>");
		gets(arr1);
		printf("請輸入需判斷的旋轉字符串:>");
		gets(arr2);
		int ret = is_left_move(arr1, arr2);
		if (ret == 1)
		{
			printf("是旋轉字符串\n");
		}
		else
		{
			printf("不是旋轉字符串\n");
		}
	}	
	return 0;
}

結果

如何使用C語言編程C++旋轉字符操作串

到此,關于“如何使用C語言編程C++旋轉字符操作串”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

大邑县| 疏勒县| 阿拉善右旗| 盐津县| 酒泉市| 湘乡市| 新乡市| 黄平县| 公安县| 揭东县| 石泉县| 汾西县| 胶南市| 安远县| 林州市| 乐平市| 顺昌县| 崇义县| 内丘县| 河西区| 乌苏市| 成都市| 遂平县| 孙吴县| 玉门市| 黄山市| 台南市| 当阳市| 迁西县| 应城市| 竹北市| 鄂州市| 岑巩县| 锡林浩特市| 南江县| 巴林左旗| 平塘县| 崇明县| 八宿县| 溧阳市| 商水县|