当前位置:   article > 正文

C语言每日一题:判断选择字符串(7.21)_c语言字符串选择题

c语言字符串选择题

题目:写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。

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

给定s1=abcd和s2=ACBD,返回0

AABCD左旋一个字符得到ABCDA

AABCD左旋两个字符得到BCDAA

AABCD右旋一个字符得到DAABC

简单介绍一下下面需要用到的函数:

strcmp函数

strcmp 是 C 语言标准库函数之一,用于比较两个字符串。其原型定义在 <string.h> 头文件中。strcmp 函数比较两个字符串 s1 和 s2,它逐个字符地比较 ASCII 值,直到遇到一个不同的字符或者达到字符串的结尾。

函数原型如下:

  1. int strcmp(const char *s1, const char *s2);
  2. //参数说明:
  3. //s1: 指向要比较的第一个字符串的指针。
  4. //s2: 指向要比较的第二个字符串的指针。
  5. //返回值:
  6. //如果 s1 和 s2 字符串相等,返回 0。
  7. //如果 s1 小于 s2,返回小于 0 的值。
  8. //如果 s1 大于 s2,返回大于 0 的值。
  9. //具体返回值的细节取决于实现,通常是第一个不匹配字符在 s1 中的 ASCII 值减去在 s2 中的 ASCII 值。

 strstr函数

strstr 函数是 C 语言标准库函数之一,用于在字符串中查找子串。其原型定义在 <string.h> 头文件中。strstr 函数会搜索字符串 haystack 中第一次出现字符串 needle 的位置。

函数原型如下:

  1. char *strstr(const char *haystack, const char *needle);
  2. //参数说明:
  3. //haystack: 指向要搜索的字符串的指针。
  4. //needle: 指向要查找的子串的指针。
  5. //返回值:
  6. //如果 needle 是 haystack 的一个子串,则返回指向 haystack 中 needle 第一次出现的指针。
  7. //如果 needle 不是 haystack 的子串,则返回 NULL。
  8. //如果 needle 是一个空字符串(即 *needle == '\0'),则返回 haystack。

 解法1:可以参考字符左旋中的解法

这里将每次旋转的值记录在数组中,与另一个字符串比较。

代码如下:

  1. int leftRound(char* str1, char* str2)
  2. {
  3. int i = 0;
  4. int len = strlen(str1);
  5. for (i = 0; i < len; i++)
  6. {
  7. int j = 0;
  8. int temp = str1[0];
  9. for (j; j < len - 1; j++)
  10. {
  11. str1[j] = str1[j + 1];
  12. }
  13. str1[j] = temp;
  14. if (strcmp(str1, str2) == 0)
  15. return 1;
  16. }
  17. return 0;
  18. }

运行图:

解法2: 将原字符串再来一遍接在后面,然后找一找待查找的字符串是不是两倍原字符串的子集即可。

代码如下: 

  1. int findStr(char* str1,char* str2)
  2. {
  3. int temp[40] = { 0 };
  4. strcpy(temp, str1);//将str1复制到temp数组
  5. strcat(temp, str1);//temp数组后接上str1数组,即为2个str数组拼接
  6. return strstr(temp, str2) != NULL;//查找str2是否为字串,若是则返回1,不是则返回0
  7. }

运行图: 

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号