1. 程式人生 > >(騰訊程式設計題)字元移位--js

(騰訊程式設計題)字元移位--js

小Q最近遇到了一個難題:把一個字串的大寫字母放到字串的後面,各個字元的相對位置不變,且不能申請額外的空間
你能幫幫小Q嗎?
輸入描述:

輸入資料有多組,每組包含一個字串s,且保證:1<=s.length<=1000

輸出描述:

對於每組資料,輸出移位後的字串。

輸入例子1:
AkleBiCeilD
輸出例子1:
kleieilABCD

從字串頭開始遍歷,找到大寫字母后,將它放到字串末尾,此時陣列已經改變,那麼不能讓i繼續加下去,要回退直至i加上大寫字母的個數為字串的長度才表示字串已遍歷完畢。

 function move(str){
        var len=str.length;
        str=str.split("")
        var s='';      
        var count=0;
        var flag=false; //記錄是否回退下面的i
        for(var i=0;;i++){
            // 如果測出是大寫字母,將他們放到最後
            if(str[i]>='A'&&str[i]<='Z'){
                count++;
                s=str.splice(i,1).toString();
                str.splice(len-1,0,s);
                flag=true;
            }
            console.log(str)
            // 若相加等於中長度=表示已遍歷完整個字串,後面的大寫相對位置已經是對的了
            if((count+i)==len) break;
            if(flag) i--;
            flag=false;
        }
        str=str.join("");
        return str;
    }
    console.log(move("AkleBiCeilD"))