热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

检查给定的字符串是否是K周期的

检查给定的字符串是否是 K 周期的原文:https://www . geeksforgeeks . org/check-if-给

检查给定的字符串是否是 K 周期的

原文:https://www . geeksforgeeks . org/check-if-给定字符串-k-periodic/

给定一个字符串 str 和一个整数 K ,任务是检查给定的字符串是否为 K 周期。如果字符串是子字符串字符串【0…k-1】的重复,即字符串“ababab”2 周期,则字符串是 k 周期的。打印如果给定字符串是 k 周期的,则打印

示例:

输入: str = "geeksgeeks ",k = 5
输出:
重复长度为 k 的前缀即“geeks”即可生成给定字符串

输入: str = "geeksforgeeks ",k = 3
输出:

方式:从子串str【k,2k-1】str【2k,3k-1】等开始,检查这些子串是否都等于长度为 k 的串的前缀,即str【0,k-1】。如果所有这些子字符串的条件都为真,则打印否则打印
以下是上述方法的实施:

C++


// CPP implementation of the approach
#include<bits/stdc++.h>
using namespace std;
    // Function that return true if sub-string
    // of length k starting at index i is also
    // a prefix of the string
    bool isPrefix(string str, int len, int i, int k)
    {
        // k length sub-string cannot start at index i
        if (i + k > len)
            return false;
        for (int j = 0; j < k; j++)
        {
            // Character mismatch between the prefix
            // and the sub-string starting at index i
            if (str[i] != str[j])
                return false;
            i++;
        }
        return true;
    }
    // Function that returns true if str is K-periodic
    bool isKPeriodic(string str, int len, int k)
    {
        // Check whether all the sub-strings
        // str[0, k-1], str[k, 2k-1] ... are equal
        // to the k length prefix of the string
        for (int i = k; i < len; i += k)
            if (!isPrefix(str, len, i, k))
                return false;
        return true;
    }
    // Driver code
    int main()
    {
        string str = "geeksgeeks";
        int len = str.length();
        int k = 5;
        if (isKPeriodic(str, len, k))
        cout << ("Yes");
        else
        cout << ("No");
    }
// This code is contributed by
// Surendra_Gangwar


Java 语言(一种计算机语言,尤用于创建网站)


// Java implementation of the approach
class GFG {
    // Function that return true if sub-string
    // of length k starting at index i is also
    // a prefix of the string
    static boolean isPrefix(String str, int len, int i, int k)
    {
        // k length sub-string cannot start at index i
        if (i + k > len)
            return false;
        for (int j = 0; j
            // Character mismatch between the prefix
            // and the sub-string starting at index i
            if (str.charAt(i) != str.charAt(j))
                return false;
            i++;
        }
        return true;
    }
    // Function that returns true if str is K-periodic
    static boolean isKPeriodic(String str, int len, int k)
    {
        // Check whether all the sub-strings
        // str[0, k-1], str[k, 2k-1] ... are equal
        // to the k length prefix of the string
        for (int i = k; i
            if (!isPrefix(str, len, i, k))
                return false;
        return true;
    }
    // Driver code
    public static void main(String[] args)
    {
        String str = "geeksgeeks";
        int len = str.length();
        int k = 5;
        if (isKPeriodic(str, len, k))
            System.out.print("Yes");
        else
            System.out.print("No");
    }
}


Python 3


# Python3 implementation of the approach
# Function that returns true if sub-string
# of length k starting at index i
# is also a prefix of the string
def isPrefix(string, length, i, k):
    # k length sub-string cannot
    # start at index i
    if i + k > length:
        return False
    for j in range(0, k):
        # Character mismatch between the prefix
        # and the sub-string starting at index i
        if string[i] != string[j]:
            return False
        i += 1
    return True
# Function that returns true if
# str is K-periodic
def isKPeriodic(string, length, k):
    # Check whether all the sub-strings
    # str[0, k-1], str[k, 2k-1] ... are equal
    # to the k length prefix of the string
    for i in range(k, length, k):
        if isPrefix(string, length, i, k) == False:
            return False
    return True
# Driver code
if __name__ == "__main__":
    string = "geeksgeeks"
    length = len(string)
    k = 5
    if isKPeriodic(string, length, k) == True:
        print("Yes")
    else:
        print("No")
# This code is contributed
# by Rituraj Jain


C


// C# implementation of the approach
using System;
class GFG
{
    // Function that return true if sub-string
    // of length k starting at index i is also
    // a prefix of the string
    static bool isPrefix(String str, int len, int i, int k)
    {
        // k length sub-string cannot start at index i
        if (i + k > len)
            return false;
        for (int j = 0; j < k; j++)
        {
            // Character mismatch between the prefix
            // and the sub-string starting at index i
            if (str[i] != str[j])
                return false;
            i++;
        }
        return true;
    }
    // Function that returns true if str is K-periodic
    static bool isKPeriodic(String str, int len, int k)
    {
        // Check whether all the sub-strings
        // str[0, k-1], str[k, 2k-1] ... are equal
        // to the k length prefix of the string
        for (int i = k; i < len; i += k)
            if (!isPrefix(str, len, i, k))
                return false;
        return true;
    }
    // Driver code
    public static void Main()
    {
        String str = "geeksgeeks";
        int len = str.Length;
        int k = 5;
        if (isKPeriodic(str, len, k))
            Console.Write("Yes");
        else
            Console.Write("No");
    }
}
/* This code contributed by PrinciRaj1992 */


服务器端编程语言(Professional Hypertext Preprocessor 的缩写)



// PHP implementation of the approach
// Function that return true if sub-
// of length $k starting at index $i
// is also a prefix of the string
function isPrefix($str, $len, $i, $k)
{
    // $k length sub- cannot start at index $i
    if ($i + $k > $len)
        return false;
    for ( $j = 0; $j < $k; $j++)
    {
        // Character mismatch between the prefix
        // and the sub- starting at index $i
        if ($str[$i] != $str[$j])
            return false;
        $i++;
    }
    return true;
}
// Function that returns true if $str is K-periodic
function isKPeriodic($str, $len, $k)
{
    // Check whether all the sub-strings
    // $str[0, $k-1], $str[$k, 2k-1] ... are equal
    // to the $k length prefix of the
    for ($i = $k; $i < $len; $i += $k)
        if (!isPrefix($str, $len, $i, $k))
            return false;
    return true;
}
// Driver code
$str = "geeksgeeks";
$len = strlen($str);
$k = 5;
if (isKPeriodic($str, $len, $k))
    echo ("Yes");
else
    echo ("No");
// This code is contributed by ihritik
?>


java 描述语言


<script>
// js implementation of the approach
// Function that return true if sub-string
// of length k starting at index i is also
// a prefix of the string
function isPrefix(str, len, i, k){
    // k length sub-string cannot start at index i
    if (i + k > len)
        return false;
    for (let j = 0; j < k; j++)
    {
        // Character mismatch between the prefix
        // and the sub-string starting at index i
        if (str[i] != str[j])
            return false;
        i++;
    }
    return true;
}
// Function that returns true if str is K-periodic
function isKPeriodic(str, len, k)
{
    // Check whether all the sub-strings
    // str[0, k-1], str[k, 2k-1] ... are equal
    // to the k length prefix of the string
    for (let i = k; i < len; i += k)
        if (!isPrefix(str, len, i, k))
            return false;
    return true;
}
// Driver code
let str = "geeksgeeks";
let len = str.length;
let k = 5;
if (isKPeriodic(str, len, k))
    document.write("Yes");
else
    document.write("No");
script>

Output: 

Yes

时间复杂度: O(K * log(len))
辅助空间: O(1)


推荐阅读
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了[从头学数学]中第101节关于比例的相关问题的研究和修炼过程。主要内容包括[机器小伟]和[工程师阿伟]一起研究比例的相关问题,并给出了一个求比例的函数scale的实现。 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文介绍了Java高并发程序设计中线程安全的概念与synchronized关键字的使用。通过一个计数器的例子,演示了多线程同时对变量进行累加操作时可能出现的问题。最终值会小于预期的原因是因为两个线程同时对变量进行写入时,其中一个线程的结果会覆盖另一个线程的结果。为了解决这个问题,可以使用synchronized关键字来保证线程安全。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
author-avatar
MrSydi2u_604
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有