由买买提看人间百态

topics

全部话题 - 话题: countb
(共0页)
o****o
发帖数: 1398
1
来自主题: JobHunting版 - 贡献一道G家的面试题
public class StringProcessor {
//return new length
//assume ary is large enough
public static int process(char[] ary, int length) {
int i=0, j=-1;
int countB = 0;
while(i < length) {
if(j == -1) {
if(ary[i] == 'A')
j = i;
} else {
if(ary[i] != 'A') {
ary[j] = ary[i];
j++;
}
}
if(ary[i] == 'B')
... 阅读全帖
o****o
发帖数: 1398
2
来自主题: JobHunting版 - 贡献一道G家的面试题
改进一下
public class StringProcessor {
//return new length
//assume ary is large enough
public static int process(char[] ary, int length) {
int i=0, j=0;
int countB = 0;
while(i < length) {
char c = ary[i++];
if(c != 'A') ary[j++] = c;
if(c == 'B') countB++;
}
//j == new length
if(countB > 0) {
int n = j + countB - 1;
i = j - 1;
while(i >= 0) {
char c =... 阅读全帖
H***e
发帖数: 476
3
来自主题: JobHunting版 - 上一道题吧
keep一个左括号的count,括号对数countB
遇到 ( , count++;
遇到 ), count--; 同时 把括号对数 countB++
然后 一旦遇到)并且左括号的为0了,此时说明所有前面的都不再对以后valid了,这时
候countB是一个候选值,跟max 比较,然后countB set to 0; 再继续。。
不知道对否
喔, 还要keep一个变量来记录当前最长长度子串的数目。
J**9
发帖数: 835
4
来自主题: JobHunting版 - 贡献一道G家的面试题
char *hkStringRemoveADoubleB(char *str)
{
if (!str) return NULL;
char *s=str;
char *d=str;
int countb = 0;
int len=0;
while(*s)
{
if (*s=='B') countb++; /// Count B
if(*s!='A') /// Remove A
{
*d++=*s++;
len++;
}
else
s++;
}
if(len)
{
s = str+(len+countb); ///New string length
*s = '\0';
s--;
d--;
while(d!=str)
{
if (*d=='B... 阅读全帖
(共0页)