打印出给定字符串中既是该字符串前缀又是该字符串后缀的最长部分,在C程序中

打印出给定字符串中既是该字符串前缀又是该字符串后缀的最长部分,在c程序中

给定一个字符串,我们必须检查最长前缀的长度,它也是字符串的后缀,就像有一个字符串“abcab”,所以这里“ab”的长度为2,是最长的子字符串相同的前缀和后缀。

示例

Input: str[] = { “aabbccdaabbcc” }Output: 6Input: abdabOutput: 2

如果我们从字符串的开头和结尾开始指针,那么它们会在某个点重叠,所以我们不会这样做,而是从中间断开字符串并开始匹配左右字符串。如果它们相等,则任何一个匹配字符串的返回大小相同,否则尝试两侧的长度较短。

算法

int longest(char str[], int n)STARTSTEP 1 : DECLARE length AS 0 AND i AS n/2STEP 2 : IF n < 2 THEN   RETURN 1STEP 3 :LOOP WHILE TILL str[i]!=''   IF str[i] == str[length] THEN,      INCREMENT length BY 1      INCREMENT i BY 1   ELSE      IF length == 0 THEN,         INCREMENT i BY 1      ELSE         DECREMENT length BY 1      END IF   END IFEND WHILERETURN lengthSTOP

示例

#include int longest(char str[], int n){   int length = 0, i = n/2;   if( n < 2 )      return 1;   while( str[i]!='' ){      //When we find the character like prefix in suffix,      //we will move the length and i to count the length of the similar prefix and suffix      if (str[i] == str[length]){         ++length;         ++i;      } else //When prefix and suffix not equal{         if(length == 0)            ++i;         else            --length;      }   }   return length;}int main(int argc, char const *argv[]){   char str[] = {"abccmmabcc"};   int n = sizeof(str)/sizeof(str[0]);   int length = longest(str, n);   printf("Length = %d", length);   return 0;}

输出

如果我们运行上面的程序,它将生成以下输出:

Length = 4

以上就是打印出给定字符串中既是该字符串前缀又是该字符串后缀的最长部分,在C程序中的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1445622.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 22:41:21
下一篇 2025年12月16日 12:05:01

相关推荐

  • 在C语言中,打印已排序的数组中的不重复元素

    给定一个整数元素的数组,任务是删除重复的值并以排序的方式打印出不同的元素。 下面给出了一个以4、6、5、3、4、5、2、8、7和0的顺序存储整数类型值的数组,现在,结果将以0、2、3、4、4、5、5、6、7和8的顺序打印出排序的元素,但是这个结果仍然包含重复的值4和5,应该将它们删除,最终的结果将是…

    2025年12月17日
    000
  • 找到最后一个能够翻转二进制字符串中字符的玩家

    欢迎来到我们关于在C++中涉及二进制字符串的有趣算法问题的全面指南。我们将研究一个问题,即我们需要找到能够翻转二进制字符串中字符的最后一个玩家。这个问题对于理解博弈论和二进制字符串操作非常有益。 问题陈述 给定一个二进制字符串,我们有两个玩家轮流将一个’1’翻转成&#8217…

    2025年12月17日
    000
  • 编写一个程序来打印二项式展开系列

    二项展开式是一个数学公式,用于展开 (a+b)^n 形式的表达式,其中 n 是正整数,a 和 b 可以是任何实数或复数。展开式给出了展开式中各项的系数。 一个二项式展开可以表示为 $$mathrm{(a+b)^n= ^nC_0a^nb^0+ ^nC_1a^{n-1}b^1 + ^nCa^{n-2}b…

    2025年12月17日
    000
  • 在C语言中,字符串中任意两个相同字符之间的最大字符数

    我们得到一个字母字符串。数组中至少会有两个相同字符的出现。这里的任务是找到任意两个相同字符之间的最大字符数。如果没有任何字符的重复,则返回-1。 输入 – 字符串 str = “abcdba” 输出 – 字符串中任意两个相同字符之间的最大字符数 &#8…

    2025年12月17日
    000
  • 打印系列的前N个项(0.25、0.5、0.75,…)的分数表示形式

    输入N,它等于要打印的系列的最大数 Input : N=5Output : 0 ¼ ½ ¾ 1 算法 STARTStep 1 -> declare start variables as int num , den, i, nStep 2 -> i…

    2025年12月17日
    000
  • 最小化所需操作的次数,使得两个给定的字符串成为彼此的排列

    在本文中,我们将讨论如何最大限度地减少两个给定字符串相互排列所需的给定操作的数量。我们将遵循分步方法并提供 C++ 代码实现。我们还将提供一个示例测试用例来帮助理解问题和解决方案。 问题陈述 给定两个字符串 s1 和 s2,我们需要找到使 s1 和 s2 彼此排列所需的最少操作数。我们可以执行两种操…

    2025年12月17日
    000
  • 递归地打印给定的模式

    在这里,根据给定的问题模式,需要使用递归方法来显示。 递归函数是一个调用自身n次的函数。程序中可以有n个递归函数。递归函数的问题在于它们的复杂性。 算法 STARTStep 1 -> function int printpattern(int n) If n>0 Printpattern…

    2025年12月17日
    000
  • 检查任意字符串的左移和右移是否会得到给定的字符串

    字符的集合由字符串数据类型表示。它使用字母、数字、符号和空格进行逻辑排列。大多数计算机语言使用单引号或双引号将字符串括起来,以区分它们与其他数据类型。 程序员经常使用字符串来进行一些输入和输出操作,存储和操作文本数据等。字符串的一些常见操作包括拼接(将两个或多个字符串合并)、提取子字符串(获取字符串…

    2025年12月17日
    000
  • C程序打印“偶数”或“奇数”,不使用条件语句

    在本节中,我们将看到如何在不使用任何条件语句(如,>=,==)的情况下检查一个数是奇数还是偶数。 我们可以通过使用条件语句轻松地检查奇数还是偶数。我们可以将数字除以2,然后检查余数是否为0。如果为0,则是偶数。否则,我们可以将数字与1进行AND运算。如果答案为0,则是偶数,否则为奇数。 这里不…

    2025年12月17日
    000
  • 在C程序中,字符串的字母数字缩写是什么?

    在这里,我们将看到一个与给定字符串的字母数字缩写相关的有趣问题。字符串长度小于10。我们将打印出所有的字母数字缩写。 字母数字缩写是由字符和数字混合形成的。该数字的值是被省略的字符数。可能有任意数量的被省略的子字符串。没有两个子字符串是相邻的。让我们看一下获取这个概念的算法。 算法 printAbb…

    2025年12月17日
    000
  • 在C程序中,以矩阵对角线模式打印数字

    任务是打印一个 n x n 的对角线模式的矩阵。 如果 n 是 3,那么打印一个对角线模式的矩阵如下: 所以输出将会是: 示例 Input: 3Output: 1 2 4 3 5 7 6 8 9Input: 4Output: 1 2 4 7 3 5 8 11 6 9 12 14 10 13 15 1…

    2025年12月17日
    000
  • 在C程序中,进行多个数组范围增量操作后,打印修改后的数组

    给定一个数组 arr[m],其中包含 m 个整数和 n(要添加到数组中的值),并给出 r 个查询,并给出一些开始和结束。对于每个查询,我们必须在数组中添加从开头到限制末尾的值 n。 示例 Input:arr[] = {1, 2, 3, 4, 5}query[] = { { 0, 3 }, { 1, …

    2025年12月17日
    000
  • 在C语言中打印对称的双三角形图案

    给定行数,程序必须以最小的复杂性打印对称双三角形图案。 示例 Input: 5Output: X X O X O X X O X O X X O X O X X 整个问题包含3个不同的分区 − 立即学习“C语言免费学习笔记(深入)”; 对于奇数n,打印上半部分的n-1行,对于偶数n,打印上半部分的n…

    2025年12月17日
    000
  • 检查字符串的字符是否可以通过替换’_’来变得非递减

    在本文中,我们将深入探讨字符串操作领域中一个有趣的问题:如何通过替换“?”字符来检查给定字符串的字符是否可以变为非递减顺序。这个问题为您提供了一个练习C++中字符串操作和条件检查技巧的绝佳机会。 Problem Statement Given a string consisting of alpha…

    2025年12月17日
    000
  • 将以下内容翻译为中文:C++程序将字符串转换为浮点数

    C++ 中使用静态类型。为了编写程序,变量必须定义为特定类型。有时必须读取来自控制台或文件的输入。在这种情况下,程序被赋予字符串数据。需要特殊操作才能将它们转换为其他数据类型。本文将提供将字符串转换为浮点整数的 C++ 方法。可以使用几种不同的方法来实现此目的。分别探索它们中的每一个。 在 C++ …

    2025年12月17日
    000
  • 使用C++从字符串中删除给定的单词

    在本文中,我们将解决从给定字符串中删除给定单词的问题。例如 – Input : str = “remove a given word ”, word = “ remove ”Output : “ a given word &rd…

    2025年12月17日
    000
  • 二进制字符串的字典序排名

    在本文中,我们将探讨一个涉及二进制字符串和词典序的有趣问题。我们的任务是找到给定二进制字符串的词典序排名。我们将使用C++来演示我们的解决方案,C++是一种以其高效性和灵活性而闻名的流行编程语言。 理解词典顺序 词典顺序(也称为字母顺序或字典顺序)是指根据单词的组成字母的字母顺序排列单词。 问题陈述…

    2025年12月17日
    000
  • 安排一个二进制字符串,以在索引范围内获得最大值。C/C++?

    对于一个由0和1组成的给定字符串,我们给出了M个不相交的范围A,B(A 活动是找到一个合法或有效的排列,同时满足以下两个条件− 所有M个给定范围之间的数字之和最大。 字符串将是字典序最大的。字符串1100的字典序比字符串1001高。 立即学习“C++免费学习笔记(深入)”; 示例 Input1110…

    2025年12月17日
    000
  • 重新排列一个字符串,以最大化任意一对元音字母之间的最小距离

    在本文中,我们将从字符串操作领域解开一个有趣的问题:“重新排列字符串以最大化任何一对元音之间的最小距离”。这个问题挑战我们操纵字符串中字符的排列,以确保任意两个元音字符之间的最大可能的最小距离。我们将详细讨论该问题,提供 C++ 代码实现,并举例说明。 理解问题陈述 给定一个字符串,任务是重新排列字…

    2025年12月17日
    000
  • 给定一个字符串,其中字母的表示方式被打乱的数字

    在今天的文章中,我们将深入探讨与C++中字符串操作相关的一个独特问题。这个问题是“在给定字符串中,字母表达式被打乱的数字。” 这个问题可以作为一个很好的练习,来提高你在C++中的字符串操作和数据结构技能。 问题陈述 给定一个字符串,任务是识别其中字母表达方式被打乱的数字。例如,如果输入字符串是&#8…

    2025年12月17日
    000

发表回复

登录后才能评论
关注微信