0) s[-6ren">
gpt4 book ai didi

algorithm - 修剪 <= 2 个字符的字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:48:53 24 4
gpt4 key购买 nike

假设给你一个输入字符串:

"my name is vikas"

建议将其修改为的算法:

"name vikas"

这意味着删除长度为 <=2 的单词或者说 k字符,使其通用。

最佳答案

我认为您可以在 O(n) 时间内就地完成此操作。遍历字符串,保留一个指向您正在处理的单词的开头的指针。如果发现单词的长度大于 k,则用该单词覆盖字符串的开头。这是一个 C 代码(它假定每个单词都由精确的空格分隔):

void modify(char *s, int k){

int n = strlen(s);
int j = 0, cnt = 0, r = 0, prev = -1;
s[n++] = ' '; // Setinel to avoid special case
for(int i=0; i<n; i++){
if(s[i] == ' '){
if (cnt > k){
if(r > 0) s[r++] = ' ';
while(j < i) s[r++] = s[j++];
}
cnt = 0;
}
else {
if (prev == ' ') j = i;
cnt++;
}
prev = s[i];
}
s[r] = '\0';
}
int main(){

char s[] = "my name is vikas";
modify(s, 2);
printf("%s\n", s);
}

关于algorithm - 修剪 <= 2 个字符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4746665/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com