说我有一串字符,我想骆驼案。那是"hello this is john"
应该是"Hello This Is John"
。为字符串s
提供解决方案的线性方法是遍历每个字符并使用临时变量更新字符串,例如:
finished+=s.charAt(0).toUpperCase();
for(var i=1; i < s.length; i++)
{
if(s.charAt(i) != " ")
{
finished+=s.charAt(i);
}
else
{
finished+=" ";
finished+=s.charAt(i+1).toUpperCase();
i++;
}
alert(finished);
我的问题是如果给出一个n长度的字符串s会更有效吗,我们在字符串的开头(向前)和结束(向后工作)的索引上启动解决方案?如:
var s="hello this is Nithin";
var begin="";
var back="";
begin+=s.charAt(0).toUpperCase();
i=1;
j=s.length-1;
while(i < j)
{
if(s.charAt(i) != " ")
{
begin+=s.charAt(i);
}
else
{
begin+=" ";
begin+=s.charAt(i+1).toUpperCase();
i++;
}
if(s.charAt(j-1) === " ")
{
var temp = " " + s.charAt(j).toUpperCase();
back= temp + back;
j--;
}
else
{
back= s.charAt(j) + back;
}
i++;
j--;
}
alert(begin+back);
主要是,这会从O(n)复杂度变为O(log n)复杂度吗?