import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String s = scanner.next(); int n = s.length(); // 标记26个字母的是否是元音 // 1:元音 // 0:辅音 int[] yy = new int[26]; yy['a' - 'a'] = 1; yy['o' - 'a'] = 1; yy['e' - 'a'] = 1; yy['i' - 'a'] = 1; yy['u' - 'a'] = 1; // 标记字符串中的字符是否是元音 int[] a = new int[n]; for (int i = 0; i < n; ++i) { a[i] = yy[s.charAt(i) - 'a']; } int ans = 0; for (int i = 0; i < n - 4; ++i) { // 用集合统计5个字符是否相同 // 如果集合大小为5,则互不相同 Set<Character> set = new HashSet<>(); set.add(s.charAt(i)); set.add(s.charAt(i + 1)); set.add(s.charAt(i + 2)); set.add(s.charAt(i + 3)); set.add(s.charAt(i + 4)); if (set.size() == 5 && a[i] == 0 && a[i + 3] == 0 && a[i + 1] == 1 && a[i + 2] == 1 && a[i + 4] == 1) { ++ans; } } System.out.println(ans); } }
有n个怪物排成一排,第i个怪物的血量为ai。有两个技能可以打怪:
倒着处理
import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int[] a = new int[n]; for (int i = 0; i < n; ++i) { a[i] = scanner.nextInt(); } long ans = 0; // 这里必须用long,会超int for (int i = n - 1; i >= 2; --i) { int n1 = a[i] / 3; int n2 = a[i - 1] / 2; int n3 = a[i - 2]; int mn = Math.min(n1, Math.min(n2, n3)); ans += mn * 5; a[i] -= mn * 3; a[i - 1] -= mn * 2; a[i - 2] -= mn; ans += a[i]; } ans += a[0] + a[1]; System.out.println(ans); } }
一段java代码,判断其中最多有多少层for循环嵌套。
保证代码合法,且不含注释。循环语句只有for,条件语句只有if,循环语句和条件语句保证包含大括号用来控制范围。
代码中只有一个类和一个主函数。
栈。
只差一个样例没过,求大佬指教。
import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); StringBuilder str = new StringBuilder(""); while (scanner.hasNextLine()) { String input = scanner.nextLine(); str.append(input); // 将代码合并成一个长字符串 } String s = str.toString(); Stack<String> stack = new Stack<>(); int ans = 0; int cur = 0; // 当前嵌套层数 int n = s.length(); int i = 0; while (i < n) { // for 入栈,并且搜索到for后的'{' if (s.charAt(i) == 'f' && s.charAt(i + 1) == 'o' && s.charAt(i + 2) == 'r') { stack.push("for"); ++cur; ans = Math.max(ans, cur); while (i < n - 2 && s.charAt(i) != '{') { ++i; } ++i; } else if (s.charAt(i) == 'i' && s.charAt(i + 1) == 'f') { // if ,入栈 stack.push("if"); while (i < n - 2 && s.charAt(i) != '{') { ++i; } ++i; } else if (s.charAt(i) == '}') { // '}'是if的,直接出栈 if (!stack.isEmpty() && stack.peek().equals("if")) { stack.pop(); } else if (!stack.isEmpty()) { // '}'是for的,嵌套层数减一 stack.pop(); --cur; } ++i; } else { ++i; } } System.out.println(ans); } }#百度笔试##百度#