划分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???
查看15道真题和解析