PTAC語言7-31字符串循環(huán)左移-創(chuàng)新互聯(lián)

題目

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比海東網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式海東網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋海東地區(qū)。費用合理售后完善,10余年實體公司更值得信賴。解題思路:

? 看到這個左移動的時候就想到了 之前看的一個視頻,原理和這個類似。

左移k個元素,就先把前 k 個元素 逆序,再把后面剩下的元素逆序,然后再整體逆序;舉個例子:

假如說輸入的字符串是 "hello world!", k??= 2? ,我們先把 "he" 逆序 然后再把 "llo world!"逆序

然后再對逆序之后的再逆序一次,就可以的我們要想要的結果。?

因為要使用多次逆序,我選擇把逆序寫成一個函數(shù),使用時直接調用即可。

逆序:

?通過傳入的左右指針我們知道需要逆序的位置

?當k =2 時,我們需要逆序的是 he這里,這時候指針指向的位置是

指針-指針表示的是兩個指針之間的元素個數(shù),加上1 為要逆序的個數(shù),再除以2表示要執(zhí)行幾次交換。k=2是 只需要交換一次 k = 5時 交換三次,當執(zhí)行第三次的時候 left 和right指向同一個位置,不滿足條件就會退出。(不加? left != right 也是可以過的 只不過會多進行一次浪費一點點時間)

逆序的過程就是 交換左右的值 然后左右指針再同時向中間靠近。

我通過i 作為下標進行輸入,同時 i 也作為記錄輸入字符長短的工具,i的值也就是\n出現(xiàn)之前的字符串的長度。

當k輸入的過大時我們還需要注意,如果k == i 那就是一整個逆置一圈,相當于沒有逆置,當k的值大于i 時,實際上逆置的次數(shù)只有 k%i 次 所以 我用? k = k%i 來規(guī)范 輸入的K ,當然也可以寫成k%=i? ;

最后只需要在main()函數(shù)里調用三次 逆序函數(shù)就可以了,下面是代碼:

#includevoid my_switch(char* left, char* right);
int main()
{
    char ch[100] = { 0 };
    int k = 0;
    int  i = 0;
    ch[i] = getchar();
    while (ch[i] != '\n')
    {
        i++;
        ch[i] = getchar();
    }
    scanf("%d", &k);
    k = k%i ;
    //先逆序 0 - k-1 所有的元素
    my_switch(&ch[0], &ch[k - 1]);
    //再逆序 k-1 -sz-1所有的元素
    my_switch(&ch[k], &ch[i -1]);
    //最后 逆序所有的元素
    my_switch(&ch[0], &ch[i -1]);
    for (int j = 0; j< i; j++)
    {
        printf("%c", ch[j]);
    }
    return 0;
}

//使用一個左邊值和一個右值
void my_switch(char *left, char* right)
{
    int x = (right - left + 1) / 2;
    for (int i = 0; i< x && right != left; i++)
    {
        char tmp = *left;
        *left = *right;
        *right = tmp;
        left++;
        right--;
    }
}

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

本文標題:PTAC語言7-31字符串循環(huán)左移-創(chuàng)新互聯(lián)
文章起源:http://muchs.cn/article10/piodo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供云服務器、網(wǎng)站改版、手機網(wǎng)站建設網(wǎng)站策劃、靜態(tài)網(wǎng)站定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設