【发布时间】:2015-11-08 16:31:12
【问题描述】:
我在最近的一次采访中被问到这个问题。 字符串包含 a-z、A-Z 和空格。对字符串进行排序,使所有小写字母都在开头,空格在中间,大写字母在结尾。小写和大写之间的原始顺序需要保持不变。这就是我想出的:
$str = "wElComE to CaLiFOrNiA";
$lowercase ="";
$uppercase="";
$spaces="";
for ($i=0 ; $i <= strlen($str)-1 ; $i++)
{
if ($str[$i] <= 'z' && $str[$i] >= 'a' )
{
$lowercase .=$str[$i];
}
else if (($str[$i] <= 'Z' && $str[$i] >= 'A'))
{
$uppercase .=$str[$i];
}
else
{
$spaces.=$str[$i];
}
}
echo $lowercase.$spaces.$uppercase;
input: wElComE to CaLiFOrNiA
output: wlomtoairi ECECLFONA
我想知道是否有更好的方法来做到这一点?并且输入字符串有2个空格,输出只显示1个空格。这个复杂度是 O(N) 对的。
有什么想法吗?
【问题讨论】:
-
如果您查看 html 输出,则会优化空间。查看 html 源代码以查看所有空格。
-
有趣,我不知道为什么 html 会优化空间。我正在打印输出字符串,如果字符串中有空格,它应该正确显示吗?
-
因此你应该使用:
echo "<pre>".$lowercase.$spaces.$uppercase."</pre>"; -
是的,编辑了原帖
-
O(N) right是什么意思?
标签: php string string-matching