【发布时间】:2019-06-20 16:21:25
【问题描述】:
我想在字符串开头添加一个子字符串(文本),前提是该字符串在开头没有此文本。
我对最快的解决方案感兴趣。
例子:
// let's say I want to add "Has" at beginning (if doesn't exist)
$string_1 = "AnaHasSomeApples"; // we need to add
$string_1 = "HsSomeApples"; // we need to add
$string_2 = "HasApplesAlready"; // already exists at the beginning
我试过了:
$string = (strpos($string, 'Has') === false ? 'Has' : '') . $string;
我知道这样做并不难。但我想要最快(根据时间,而不是代码行)可能的方式。 谢谢。
【问题讨论】:
-
你试过什么?
-
无论您做什么,您都在考虑 O(n) 最坏情况的复杂性,因此您所做的任何事情或多或少都会表现得相当。
-
看起来您尝试的只是检查字符串中的任何位置,而不仅仅是在开头。
-
你是对的。我的错。
-
字符串连接是这里的繁重操作,也是你无法避免的操作。这样做是将第一个字符串逐字节复制到新的内存位置,然后在第一个字符串之后逐字节复制第二个字符串。与此相比,检查字符串是否以某些东西开头非常快