問題描述
馬上就要到七夕情人節(jié)了,小藍(lán)在這天想要心愛得男神表白,于是她寫下了一個(gè)長度為n僅由小寫字母組成的字符串。
她想要使這個(gè)字符串有 1314個(gè) love 子序列但是馬虎的小藍(lán)卻忘記了當(dāng)前已經(jīng)有多少個(gè)子序列為 love。
請(qǐng)你幫小藍(lán)計(jì)算出當(dāng)前字符串有多少個(gè)子序列為love,并將答案對(duì) 10的9次方+7取模。
注意:一個(gè)字符串的子序列是指從給定字符串中刪除任意數(shù)量的字符 (可以為零),并且不改變剩余字符的相對(duì)順序所得到的新字符串。例如,考慮字符串 abc 它的一些子序列括:a,b,c,ab,ac,bc,abc 以及空字符串。
輸入格式
第一行輸入一個(gè)整數(shù)n,代表字符串的長度。
第二行輸入一個(gè)長度為n僅由小寫字母組成的字符串。
代碼如下:
import java.util.Scanner;
// 1:無需package
// 2: 類名必須Main, 不可修改
public class Main {
static int mod=(int)Math.pow(10,9)+7;
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//在此輸入您的代碼...
Scanner scanner = new Scanner(System.in);
//double mod=Math.pow(10,9)+7;
// 讀入字符串的長度
int n = scanner.nextInt();
int num=0;
// 讀入輸入的字符串
String str = scanner.next();
// 初始化一個(gè)長度為4的數(shù)組用來統(tǒng)計(jì)匹配到love的次數(shù)
int[] counts = {0,0,0,0};
// 遍歷字符串,更新 counts 數(shù)組
for (int i = 0; i < n; i++) {
char c = str.charAt(i);
if (c == 'l') {
counts[0]++;
} else if (c == 'o') {
counts[1] += counts[0]; // 判斷出現(xiàn)o的時(shí)候,匹配了幾個(gè)lo
} else if (c == 'v') {
counts[2] += counts[1]; // 判斷出現(xiàn)v的時(shí)候,匹配了幾個(gè)lov
} else if (c == 'e') {
counts[3] += counts[2]; // 判斷出現(xiàn)e的時(shí)候,匹配了多少個(gè)love
num=counts[3]%mod;
}
}
System.out.println(num); // 最后一個(gè)元素即為匹配到love的個(gè)數(shù)
scan.close();
}
}
結(jié)果顯示:文章來源:http://www.zghlxwxcb.cn/news/detail-812572.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-812572.html
到了這里,關(guān)于(藍(lán)橋杯每日一題)love的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!