Tag: 字符串算法

在C中替换字符串

写一个函数 void inplace(char *str, const char pattern, const char* replacement, size_t mlen) 输入: str :以\0结尾的字符串。 输入表明我们需要一个就地算法。 pattern :一封信。 replacement :一个字符串。 mlen :内存的大小保持字符串str从内存的开头开始,而mlen应该大于strlen(str) str的最终结果仍然是指出。 请注意,应替换所有出现的模式。 例如, helelo\0……….. 这里“helelo”是最后用’\0’替换的字符串。 ‘\0’之后仍然有L个有效字节。 我们想用“123”代替“e”。 一个简单的方法就是这样,我们通过str ,当一个模式匹配时,我们将所有其余的移动到地方以填充替换字符串,然后用替换替换模式。 如果原始字符串的长度为n且仅包含e ,则需要(n-1) + (n-2) + … + 1移位。 是否有一种算法只用一次通过和恒定的内存成本扫描字符串?