行业知识
【阿里笔试题汇总】[全网首发] 2024-04-29-阿里国际春招笔试题-三语言题解(CPP/Python/Java)
大家好这里是清隆学长 ,一枚热爱算法的程序员
✨ 本系列打算持续跟新阿里国际近期的春秋招笔试题汇总~
ACM银牌| 多次AK大厂笔试 | 编程一对一辅导
感谢大家的订阅➕ 和 喜欢
清隆这边最近正在收集近一年互联网各厂的笔试题汇总,如果有需要的小伙伴可以关注后私信一下 清隆领取,会在飞书进行同步的跟新。
⌚️ 春招笔试也是接近尾声,没有拿到offer的小伙伴们抓紧啦~
文章目录
- 01.卢小姐的连续音节挑战
- 问题描述
- 输入格式
- 输出格式
- 样例输入
- 样例输出
- 数据范围
- 题解
- 参考代码
- 02.K小姐的魔法药水
- 题目描述
- 输入格式
- 输出格式
- 样例输入
- 样例输出
- 数据范围
- 题解
- 参考代码
- 03.彩色项链
- 题目描述
- 输入格式
- 输出格式
- 样例输入
- 样例输出
- 数据范围
- 题解
- 参考代码
- 写在最后
- 清隆这边最近正在收集近一年互联网各厂的笔试题汇总,如果有需要的小伙伴可以关注后私信一下 清隆领取,会在飞书进行同步的跟新。
01.卢小姐的连续音节挑战
问题描述
卢小姐最近在学习外语,她注意到在某些语言中,元音不能连续出现。现在,她有一串由不同字母组成的字符序列,她想找出一个最长的连续子序列,使得在这个子序列中没有两个相邻的元音。元音定义为 “a”, “e”, “i”, “o”, “u” 这五个字母,其他所有字母都被视为辅音。
输入格式
第一行包含一个正整数 n n n,代表卢小姐拿到的字符序列的长度。
第二行包含一个长度为 n n n 的字符串,代表卢小姐拿到的字符序列。
输出格式
输出一个整数,代表卢小姐可以得到的最长子序列的长度。
样例输入
7aeiobcd
样例输出
4
数据范围
1 ≤ n ≤ 200000 1 \leq n \leq 200000 1≤n≤200000
题解
可以遍历整个字符串,同时跟踪当前连续子序列的长度。当遇到元音时,需要检查前一个字符是否也是元音。如果是,就重置当前子序列的长度;如果不是,就继续增加当前子序列的长度,并更新最大长度。
参考代码
- Python
def longest_subsequence_without_adjacent_vowels(n, s): vowels = set("aeiou") max_length = 0 current_length = 0 prev_vowel = False for i in range(n): if s[i] in vowels: if prev_vowel: current_length = 1 # 重置,因为前一个是元音 else: current_length += 1 prev_vowel = True else: current_length += 1 prev_vowel = False max_length = max(max_length, current_length) return max_length# 读取输入数据n = int(input().strip())s = input().strip()# 输出最长子序列长度print(longest_subsequence_without_adjacent_vowels(n, s))- Java
import java.util.*;public class Main { public static int longestSubsequenceWithoutAdjacentVowels(int n, String s) { Set vowels = new HashSet(Arrays.asList('a', 'e', 'i', 'o', 'u')); int max_length = 0; int current_length = 0; boolean prev_vowel = false; for (int i = 0; i- Cpp
#include #include #include using namespace std;int longest_subsequence_without_adjacent_vowels(int n, const string& s) { set vowels = {'a', 'e', 'i', 'o', 'u'}; int max_length = 0; int current_length = 0; bool prev_vowel = false; for (int i = 0; i > n; cin >> s; cout private static final int MOD = (int) 1e9 + 7; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int[] a = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray(); Map for (int i = 2; i if (x % i == 0) { int cnt = 0; while (x % i == 0) { cnt++; x /= i; } factors.put(i, factors.getOrDefault(i, 0) + cnt * x); } } if (x 1) { factors.put(x, factors.getOrDefault(x, 0) + x); } } long res = 1; for (int exp : factors.values()) { res = res * (exp + 1) % MOD; } System.out.println(res); }} int n; cin > n; vector a(n); for (int i = 0; i > a[i]; } unordered_map factors; for (int x : a) { for (int i = 2; i * i if (x % i == 0) { int cnt = 0; while (x % i == 0) { cnt++; x /= i; } factors[i] +=1ll * cnt * x; } } if (x 1) { factors[x] += x; } } ll res = 1; for (auto [p, exp] : factors) { res = res * (exp + 1) % MOD; } cout static int n, k; static String color; static List BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] str = br.readLine().split(" "); n = Integer.parseInt(str[0]); k = Integer.parseInt(str[1]); color = br.readLine(); g = new List[n+1]; for (int i = 1; i g[i] = new ArrayList str = br.readLine().split(" "); int a = Integer.parseInt(str[0]); int b = Integer.parseInt(str[1]); g[a].add(b); g[b].add(a); } for (int i = 1; i Map res /= 2; } System.out.println(res); } static void dfs(int u, int pre, Map if (cnt.size() k) { return; } if (cnt.size() == k) { res++; } for (int i : g[u]) { if (i != pre) { char c = color.charAt(i-1); cnt.put(c, cnt.getOrDefault(c, 0)+1); dfs(i, u, cnt); cnt.put(c, cnt.get(c)-1); if (cnt.get(c) == 0) { cnt.remove(c); } } } }} if (cnt.size() k) { return; } if (cnt.size() == k) { res++; } for (int i : g[u]) { if (i != pre) { char c = color[i-1]; cnt[c]++; dfs(i, u, cnt); if (--cnt[c] == 0) { cnt.erase(c); } } }}int main() { cin > n >> k; cin >> color; for (int i = 0; i > a >> b; g[a].push_back(b); g[b].push_back(a); } for (int i = 1; i unordered_map res /= 2; } cout
- Cpp
- Java
- Python