Algorithm 有效的0和1字符串递归

Algorithm 有效的0和1字符串递归,algorithm,recursion,data-structures,Algorithm,Recursion,Data Structures,我想写一个递归算法,计算一个由1和0组成的字符串,并确定该字符串是否有效。如果字符串在行中包含3个零,则该字符串无效 例如: 1010010001无效 1111101101有效期 1000111101无效 我不知道如何编写这个算法。谢谢你的帮助 您可以这样做(假设str是您的字符串,n是它的长度,索引是基于0的) func(索引) 如果索引>=n 返回真值 如果索引

我想写一个递归算法,计算一个由1和0组成的字符串,并确定该字符串是否有效。如果字符串在行中包含3个零,则该字符串无效

例如:

1010010001无效

1111101101有效期

1000111101无效


我不知道如何编写这个算法。谢谢你的帮助

您可以这样做(假设str是您的字符串,n是它的长度,索引是基于0的)

func(索引)
如果索引>=n
返回真值
如果索引<2
返回函数(索引+1)
如果str[index]为0,str[index-1]为0,str[index-2]为0
返回错误
返回函数(索引+1)
//调用func(0),假设str是全局的,那么答案也是布尔的
答案=func(0)
时间复杂度为O(n)。只是为了完成这样一场奋进 我只需要使用循环迭代地编写它

        //This is in c/c++
        bool answer = true;
        for(i = 2;i < n;i++)
        {
            if(str[i] == '0' && str[i-1] == '0' && str[i-2] == '0')
                  answer = false;
        }
//这是c/c格式的++
bool-answer=true;
对于(i=2;i
那么是什么阻止了你?你在尝试哪种语言?你试过什么了?@SMA:我只想写它的算法,为什么要递归?这里不需要递归。
        //This is in c/c++
        bool answer = true;
        for(i = 2;i < n;i++)
        {
            if(str[i] == '0' && str[i-1] == '0' && str[i-2] == '0')
                  answer = false;
        }
public static boolean isValid(String s){
        return isValidInt(s)==3;
    }

    private static int isValidInt(String s){
        if( s == null || s.length() ==0)
                return 0;
        int prevSum=isValidInt(s.substring(1));
        if( prevSum == 3 )
            return 3;
        return s.charAt(0) != '0' ?0:1+prevSum;
    }