- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这是关于 hackerrand 中一个问题的解决方案。请点击链接:
the link of problem description
string reverseShuffleMerge(string s) {
int n = s.length();
vector<char> sarr(s.rbegin(), s.rend());
int alpha_size = 26;
vector<int> freq(alpha_size, 0);
for (int i = 0; i < n; i++) {
freq[sarr[i] - 'a']++;
}
vector<int> did_use(alpha_size, 0);
vector<int> can_use(freq.begin(), freq.end());
vector<char> A;
for (int i = 0; i < n; i++) {
if (did_use[sarr[i] - 'a'] < freq[sarr[i] - 'a'] / 2) {
while (A.size() > 0 && sarr[i] < A.back()
&& did_use[A.back() - 'a'] + can_use[A.back() - 'a'] - 1
>= freq[A.back() - 'a'] / 2) {
did_use[A.back() - 'a']--;
A.pop_back();
}
A.push_back(sarr[i]);
did_use[sarr[i] - 'a']++;
can_use[sarr[i] - 'a']--;
} else {
can_use[sarr[i] - 'a']--;
}
}
return string(A.begin(), A.end());
我不明白这一行的要点:did_use[A.back() - 'a'] + can_use[A.back() - 'a'] - 1 >= freq[A.back() - 'a']/2
谁能帮助阐明这条线在解决方案中扮演的角色?
最佳答案
在这道题中,字符串s中所有字符出现的频率都是偶数。答案将包含这些字符的一半。例如,如果 s="aaaabbcc"
,则答案必须包含 2
a、1
b 和 1
c。
所以 did_use[A.back() - 'a'] + can_use[A.back() - 'a'] - 1 >= freq[A.back() - 'a']/2
这是为了如果我们删除 A.back()
字符,我们可以在以后添加/制作所需数量的 A.back()
字符吗?字符串。
关于algorithm - 如何理解hackerrank中某道题的具体解法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53390755/
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我有几个关于描述算法时使用的术语语义的问题。 首先,“朴素”算法是什么意思?这与给定问题的其他解决方案有何不同?解决方案还可以采用哪些其他形式? 其次,我听说过很多关于“封闭式”解决方案的说法。我也不
我是从 k&r 学习 C 作为第一语言,我只是想问一下,如果你认为这个练习的解决方式是正确的,我知道它可能没有你想要的那么完整,但我想要 View ,所以我知道我正在正确地学习 C。 谢谢 /* Ex
我是一名优秀的程序员,十分优秀!