划分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???