这是在纳斯达克实习的编码回合中提出的一个问题。
程序说明:
该程序将一个二进制字符串作为输入。我们必须连续删除所有字符交替的子序列,直到字符串为空。任务是找到这样做所需的最少步骤数。
示例1:
让字符串为:0111001
Removed-0101, Remaining-110
Removed-10 , Remaining-1
Removed-1
No of steps = 3
Example2:
让字符串为:111000111
Removed-101, Remaining-110011
Removed-101, Remaining-101
Removed-101
No of steps = 3
示例3:
让字符串为:11011
Removed-101, Remaining-11
Removed-1 , Remaining-1
Removed-1
No of steps = 3
示例4:
让字符串为:10101
Removed-10101
No of steps = 1
我尝试的解决方案将二进制字符串的第一个字符视为我的子序列的第一个字符。然后创建一个新字符串,如果下一个字符不是交替序列的一部分,则将附加到该字符串中。新字符串成为我们的二进制字符串。这样,循环一直持续到新字符串为空。(有点 O(n^2) 算法)。正如预期的那样,它给了我一个超时错误。在 C++ 中添加了一些与我尝试过的 Java 代码类似的代码。
#include<bits/stdc++.h>
using namespace std;
int main() {
string str, newStr;
int len;
char c;
int count = 0;
getline(cin, str);
len = str.length();
//continue …Run Code Online (Sandbox Code Playgroud) 我遇到过这样的算法问题
给定一个包含 N 个元素的数组,我想找到数组中 k 个元素的最大偶数和
例如:
A = [4,2,6,7,8], K = 3, 算法应该返回 18 为 4 + 6 + 8 = 18
A = [5, 5, 2, 4, 3], K = 3, 算法应该返回 14 为 5 + 5 + 4 = 14
非常感谢您的帮助。