使用两个索引使用循环编辑数组是否会将时间复杂度从O(n)减少到O(log n)?

时间:2017-12-21 00:27:24

标签: javascript algorithm time-complexity

说我有一串字符,我想骆驼案。那是"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)复杂度吗?

0 个答案:

没有答案