T1 小红拿到了一个字符串,她想知道有多少个"baidu"型子串?
所谓"baidu“型字符串,指第1个、第4个字母是辅音,第2、3、5个字符是元音,且每个字母都不相同的字符串。
例如,"taigu"、"huida"、"paobu"、"baoli"等都是"baidu"型字符串。
我们定义元音字母仅有'a、'e'、'i'、'o'、'u'这五种,其余字母均为辅音字母。
输入一个字符串,长度[0,2,5,7,6]-->[0,0,1,1,6] 从后往前贪:[1,4,8,7,6]-->[1,4,6,3,0]-->[1,3,4,0,0]-->[0,1,1,0,0] n = int(input())
a = list(map(int, input().split()))
ans = 0
i = 0
for i in range(n - 3, -1, -1):
if a[i] >= 1 and a[i + 1] >= 2 and a[i + 2] >= 3:
c = min(a[i], a[i + 1] // 2, a[i + 2] // 3)
a[i] -= c
a[i + 1] -= c * 2
a[i + 2] -= c * 3
ans += c * 5
print(ans + sum(a))T3 小红拿到了一段java代码,请你判断其中最多有多少层for循环嵌套。
保证代码合法,且不含注释。循环语句只有for,条件语句只有if,循环语句和条件语句保证包含大括号用来控制范围。
代码中只有一个类和一个主函数。
多行输入
输出最大嵌套数
input:
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int a = 0 , b = 0;
int n = in.nextInt();
for (int i = 0; i < n; i++) {
if ( a < b ) {
a += b / 2;
}
for (int j = 0; j < n; j++) {
b++;
a += b;
}
for (int j = 1; j < n; j *= 2) {
b--;
}
}
System.out.println(a);
}
}
output:
2 模拟题,注意多行输入。维护一个栈维护遇到的大括号和过程值cnt=0,因为题目说了for循环必然使用大括号包裹,那么只需要判断栈入的大括号前面是不是for的大括号即可,如果是就cnt+1,否则就不管。每次遇到右括号就出栈,出栈的时候判断是不是for循环后的括号,如果是就cnt-1,否则就不管。遍历过程中最大的cnt就是结果。 注意Python多行输入。 import sys
lines = list(sys.stdin.readlines())
a = ''.join(lines)
stack = []
n = len(a)
ans = 0
cnt = 0
pf = 0 # 前一个是不是for
i = 0
while i < n - 4:
if a[i] == '{':
stack.append(pf)
cnt += pf
pf = 0
i += 1
elif a[i] == 'f' and a[i + 1] == 'o' and a[i + 2] == 'r':
pf = 1
i += 3
elif a[i] == '}':
cnt -= stack.pop()
i += 1
else:
i += 1
ans = max(ans, cnt)
print(ans)#百度##百度笔试##笔试##百度23秋招笔试编程题有点儿简单啊#
|