網(wǎng)站建設功能是什么微信軟文案例
?【C語言每日一題】—— 判斷字符串旋轉結果😎😎😎?
目錄
💡前言🌞:??
💛字符串左旋題目💛?
💪?解題思路的分享💪?
😊題目源碼的分享😊?
💛判斷字符串旋轉結果題目💛
?💪?解題思路的分享💪?
?😊題目源碼的分享😊?
👉?本菜雞&總結?👈
?
😎博客昵稱:陳大大陳
😊座右銘:所謂覺悟,就是在漆黑的荒野上開辟出一條理當前進的光明大道。
😋博主簡介:一名熱愛C/C++和算法等技術,喜歡運動,愛胡思亂想?yún)s胸懷大志的小博主!
😚博主&嘮嗑:早中晚安!😄各位CSDN的朋友!😄我是博客新人陳大大陳,希望我的文章能為你帶來幫助!歡迎大家在評論區(qū)暢所欲言!也希望大家多多為我提出您寶貴的建議!😘如果覺得我寫的不錯的話還請點個贊和關注哦~😘😘😘
💡前言🌞:??
大伙們好!😄又到了小陳每日一題的時間了~ 😋😋😋今天也帶來了十分有趣的題目!🥰🥰🥰用C語言實現(xiàn)——~判斷字符串旋轉結果(附加字符串左旋詳解),這個題目很有意思,新穎的同時又很值得思考!🤗為了講明白這個題目,我將由淺入深,先從字符串左旋講起,再講字符串左旋的判斷,我現(xiàn)在迫不及待地要和大家分享~!😄🤗🤗
💛字符串左旋題目💛?
我們首先從字符串左旋講起🥰,題目如下:
💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡實現(xiàn)一個函數(shù),可以左旋字符串中的k個字符。
例如:
ABCD左旋一個字符得到BCDA
ABCD左旋兩個字符得到CDAB
💪?解題思路的分享💪?
- 設計循環(huán)使其可以旋1次,然后讓他執(zhí)行n次是一個最簡單的思路。
😊題目源碼的分享😊?
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
void LeftRound(char* a, int n)
{int i,j,len = strlen(a);char tmp = a[0];//先儲存首個元素,便于一會交換for (i = 0; i < n; i++)//進行n次移位{for (j = 0; j < len - 1; j++){a[j] = a[j + 1];//單次的位移}}a[j] = tmp;//將第一個元素與最后唯一沒有移位的元素交換,完成一次移位。
}
int main()
{char a[] = { "abcdef" };int n;scanf("%d", &n);LeftRound(a,n);//左移幾個元素就寫幾for (int i = 0;i < strlen(a); i++){printf("%c ", a[i]);}return 0;
}
💛判斷字符串旋轉結果題目💛
💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡寫一個函數(shù),判斷一個字符串是否為另外一個字符串旋轉之后的字符串。
例如:給定s1 =AABCD和s2 = BCDAA,返回1
給定s1=abcd和s2=ACBD,返回0.
AABCD左旋一個字符得到ABCDA
AABCD左旋兩個字符得到BCDAA
AABCD右旋一個字符得到DAABC
?💪?解題思路的分享💪?
- 我們可以沿用上面的套路,只需再加上一個判斷旋轉后兩數(shù)組是否相等的部分。
- 旋轉的次數(shù)如何確定呢?我們可以用strlen函數(shù)求出字符串長度,將它的值作為旋轉次數(shù)。
- 判斷兩字符串是否相等需要不能用==,我們需要用到strcmp函數(shù),當返回值為1時,打印相等,否則打印不相等。
- 形參的類型定義成指針和數(shù)組皆可。
?😊題目源碼的分享😊?
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<assert.h>
int LeftRound(char* s1, char* s2, int n)
{assert(s1 != NULL);assert(s2 != NULL);int i = 0, j, len = strlen(s1);for (j = 0; j < n; j++){char tmp = s1[0];for (i = 0; i < len - 1; i++){s1[i] = s1[i + 1];}s1[i] = tmp;if (strcmp(s1, s2) == 0){return 1;}}return 0;
}
int main()
{char s1[] = "AABCD", s2[] = "BCDAA";int n;int len = strlen(s1);if (LeftRound(s1, s2, len)){printf("是");}else{printf("不是");}return 0;
}
?也可以寫成下面的形式。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<assert.h>
int LeftRound(char* s1, char* s2, int n)
{assert(s1 != NULL);assert(s2 != NULL);if (strcmp(s1, s2) == 0)//如果輸入的字符串和原字符串相同就等于零{return 1;}int len = strlen(s1);int i = 0;int j = 0;while (i < len)//旋轉的次數(shù)進行n-1次{char tmp = *s1;for (j = 0; j < len - 1; j++){*(s1 + j) = *(s1 + j + 1);}*(s1 + len - 1) = tmp;//判斷if (strcmp(s1, s2) == 0){return 1;}i++;}return 0;
}
int main()
{char s1[] = "AABCD", s2[] = "BCDAA";int n;int len = strlen(s1);if (LeftRound(s1, s2, len)){printf("是");}else{printf("不是");}return 0;
}
👉?本菜雞&總結?👈
本篇文章旨在分享C語言詳解【C語言每日一題】——判斷字符串旋轉結果(附加字符串左旋詳解)。🤠希望我的文章能夠讓大家有所收獲!😋😋😋大佬們如果對我的文章有什么建議,或者認為那里寫的不好,請在評論區(qū)寫下您寶貴的意見!😀如果覺得我寫的不錯的話還請點個贊和關注哦~我會持續(xù)輸出編程的知識的!🌞🌞🌞?