goback add

字符串左移位

9513 点击·0 回帖
灯火互联
楼主

/*

 * 字符串左移,如abcdefghi左移4位后为efghiabcd  */

publicclassShiftLeft {  

    staticString reverStr(String s){  

        intlow = 0;  

        inthigh = s.length()-1;  

        char[] temp = newchar[s.length()];  

        while(low <= high){  

            temp[low] = s.charAt(high);  

            temp[high] = s.charAt(low);  

            low++;  

            high--;  

        }  

        returnString.valueOf(temp);  

    }      /**

     *  

     * @param s 要移位的字符串

     * @param digits  向左移动的位数

     */

    staticString shift(String s,intdigits){  

        if(digits==0){  

            returns;  

        }elseif(digits>0){  

            digits = digits % s.length();  

            String left = reverStr(s.substring(0, digits));  

            String right = reverStr(s.substring(digits));  

            String result = reverStr(left+right);  

            returnresult;  

        }else{                              //此时变为向右移digits位,即向左移动s.length() - digits位  

            digits = -digits;  

            digits = digits % s.length();  

            returnshift(s,s.length()-digits);  

        }  

    }  

    publicstaticvoidmain(String[] args) {  

        String s = "abcdefghi";  

        System.out.println(shift(s,-3));  

    }        

}  


喜欢0 评分0