灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:6851回复:0

字符串左移位

楼主#
更多 发布于:2013-11-04 10:59

/*

 * 字符串左移,如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
游客

返回顶部