【华为od机试真题2023b卷 java】最长广播响应
时间: 2023-11-30 21:00:30 浏览: 135
华为od机考2023试题
问题描述:
给定一个字符串数组,每个元素都代表一个收到的广播消息,然后给定一个字符串pre,表示起始广播消息的前缀。要求找到最长的连续的广播消息序列,使得每个消息都以pre为前缀,并返回该序列的长度。
示例:
输入:
messages = ["preabc", "predef", "pregh", "preshi", "prejklm", "nopr", "preopq"]
pre = "pre"
输出:
4
解释:
最长的连续广播消息序列是["preabc", "predef", "pregh", "preshi"],长度为4。
解题思路:
1. 初始化一个变量maxLen为0,代表最长序列的长度。
2. 初始化一个变量curLen为0,代表当前序列的长度。
3. 遍历字符串数组messages:
- 如果当前消息以pre为前缀,则将curLen加1。
- 否则,更新maxLen为curLen的较大值,并将curLen重置为0。
4. 返回maxLen。
时间复杂度分析:
假设字符串数组的长度为n,遍历一次字符串数组的时间复杂度为O(n)。因此,总的时间复杂度为O(n)。
代码实现:
```java
public int longestBroadcast(String[] messages, String pre) {
int maxLen = 0;
int curLen = 0;
for (String message : messages) {
if (message.startsWith(pre)) {
curLen += 1;
} else {
maxLen = Math.max(maxLen, curLen);
curLen = 0;
}
}
maxLen = Math.max(maxLen, curLen);
return maxLen;
}
```
阅读全文