划分01字符串

小强有一个长度为n的01字符串str,他想将字符串划分为几部分,且每部分都有且只有一个0。小强只会去验证划分方案的正确性,但是小强他不知道对于这个字符串一共有多少总划分的方案,请你告诉小 强总的方案数,答案可能很大请对10的9次方+7取模。

』输入描述 第一行为一个n,表示01字符串的长度。 第二行为一个字符串str。 1≤n≤ 10的5次幂 」输出描述 输出为一行,表示答案。

实例1

输入

5

01010

输出

4

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        final int MOD = (int)((int)Math.pow(10.0, 9.0) + 7);
        String str1 = in.nextLine();
        int count = Integer.valueOf(str1);
        String str = in.nextLine();
        //System.out.println(str + " " + MOD);

        int start = 0, i = 0;
        int end = str.length() - 1;
        long sum = 1;
        int times = 1;
        int flag = 0; // 是否遇到了0

        while (i < str.length()) {
            int v = str.charAt(i) - '0';
            //System.out.println(i + " v=" + v + " flag = " + flag);
            if (v == 1 && flag == 1) {
                times++;
                times = times  % MOD;
            } else if (v == 1 && flag == 0) {
                ;
            } else {
                if (times > 1) {
                    sum = (sum % MOD) * (times % MOD);
                    sum = (sum % MOD);

                    times = 1;
                     //System.out.println(i + " " + sum);
                }
                flag = 1;

            }


            i++;

        }



        System.out.println(sum % MOD);


    }
}

通过率为90%。why???

全部评论

相关推荐

评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务