逆序字符串(二)

題意

給定字符類型的數(shù)組chas和一個(gè)整數(shù)size,把整體為size的左半?yún)^(qū)移到右半?yún)^(qū)去
舉個(gè)例子
ABCDE size=3,這樣的話結(jié)果為DEABC


圖片.png

實(shí)現(xiàn)的代碼如下:

    public static void f(String str,int size)
    {
        char[] chas=str.toCharArray();
        rotote(chas,0, size-1);
        rotote(chas,size,chas.length-1);
        rotote(chas,0,chas.length-1);
        System.out.println(String.valueOf(chas));
    }

其中的rotote是逆序字符串(一)中的函數(shù),實(shí)現(xiàn)起來非常簡單

解法2

敘述起來較為復(fù)雜,我們通過圖來描述


圖片.png

首先我們來看看如何實(shí)現(xiàn)整體的交換的
我們先來想想要傳入哪些參數(shù)
start end來限定整個(gè)子數(shù)組,size來表示整個(gè)需要交換的子數(shù)組的長度
像 1 2 3 4 5 6 7 A B C D 需要交換的就是ABCD和1234所以size是4
有了這些,我現(xiàn)在就開始來實(shí)現(xiàn)代碼

public static void f(char[] chas,int start,int end,int size)
{
       int i=end-size+1;//取得A對(duì)應(yīng)的位置
       while(size--!=0)//執(zhí)行size次
       {
            //交換i和start位置的元素
            i++;start++;
       }
}

然后就是我們的核心函數(shù)

public static void f(String str,int size)
    {
        if(str==null||str.length()==0)
        {
            return;
        }
        char[] chas=str.toCharArray();
        int start=0;
        int end=chas.length-1;
        int lpart=size;
        int rpart=chas.length-size;
        int s=Math.min(lpart,rpart);
        int d=lpart-rpart;
        while(true)
        {
            exchange(chas,start,end, s);
            if(d>0)
            {
                start+=s;
                lpart=d;
            }else if(d<0)
            {
                end-=s;
                rpart=-d;
            }else
            {
                break;
            }
            s=Math.min(lpart,rpart);
            d=lpart-rpart;
        }
        System.out.println(String.valueOf(chas));
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 概要 64學(xué)時(shí) 3.5學(xué)分 章節(jié)安排 電子商務(wù)網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,801評(píng)論 0 3
  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,675評(píng)論 0 4
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,632評(píng)論 1 32
  • 別自視清高 天外有天,人上有人,謙卑是一種態(tài)度,更是一種修養(yǎng)。擺正自己的位置,權(quán)力是一時(shí)的,金錢是身外的,身體是自...
    大海168閱讀 312評(píng)論 0 0
  • CNBLUEone閱讀 337評(píng)論 0 0

友情鏈接更多精彩內(nèi)容