• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            OnTheWay2012
            埋葬昨天的我,迎來(lái)重生的我!
            posts - 15,  comments - 89,  trackbacks - 0
            大家在面試的時(shí)候或者在網(wǎng)絡(luò)上經(jīng)常會(huì)看到讓寫(xiě)一個(gè)字符串反轉(zhuǎn)的函數(shù)的這種題。
            以下是我自己寫(xiě)的字符串反轉(zhuǎn)的函數(shù),懇請(qǐng)各位指教。
            char *Reverse_1(char *str)和char *Reverse_2(char *str) 實(shí)現(xiàn)的功能是把字符串反轉(zhuǎn),例如把helloworld反轉(zhuǎn)為dlrowolleh。
            char *Reverse_3(char *str)實(shí)現(xiàn)把this is a string反轉(zhuǎn)為string is a this的功能。
              1#include <iostream>
              2#include <assert.h>
              3
              4using namespace std;
              5
              6char *Reverse_1(char *str)
              7{
              8    assert(NULL != str);
              9
             10    size_t size = strlen(str);
             11    if (NULL != str && 1 < size)
             12    {
             13        for (size_t i = 0 ; i < size / 2 ; i++)
             14        {
             15            char ch = str[i];
             16            str[i] = str[size - i - 1];
             17            str[size - i - 1= ch;
             18        }

             19    }

             20
             21    return str;
             22}

             23
             24//////////////////////////////////////////////////////////////////////////
             25
             26char *Reverse_2(char *str)
             27{
             28    assert(NULL != str);
             29
             30    char *res = str;
             31
             32    size_t size = strlen(str);
             33    if (NULL != str && 1 < size)
             34    {
             35        char *pEnd = str + size - 1;
             36
             37        if(0 == size % 2)
             38        {
             39            do
             40            {
             41                char ch = *str;
             42                *str = *pEnd;
             43                *pEnd = ch;
             44            }
             while(++str != pEnd--);
             45        }

             46        else
             47        {
             48            do
             49            {
             50                char ch = *str;
             51                *str = *pEnd;
             52                *pEnd = ch;
             53            }
             while(++str != --pEnd);
             54        }

             55    }

             56
             57    return res;
             58}

             59
             60//////////////////////////////////////////////////////////////////////////
             61//////////////////////////////////////////////////////////////////////////

             62
             63char *Reverse_3_1(char *str, size_t size)
             64{
             65    assert(NULL != str);
             66
             67    if (NULL != str && 1 < size)
             68    {
             69        for (size_t i = 0 ; i < size / 2 ; i++)
             70        {
             71            char ch = str[i];
             72            str[i] = str[size - i - 1];
             73            str[size - i - 1= ch;
             74        }

             75    }

             76
             77    return str;
             78}

             79
             80char *Reverse_3(char *str)
             81{
             82    assert(NULL != str);
             83
             84    char *res = str;
             85    if (NULL != str && NULL != strchr(str, ' '))//這里的strchr是為了防止出現(xiàn)bug(例如:abc被修改為cba)
             86    {
             87        str = Reverse_3_1(str, strlen(str));
             88        while (true)
             89        {
             90            char *pSubStr = strchr(str, ' ');
             91            if(NULL == pSubStr)
             92            {
             93                Reverse_3_1(str, strlen(str));
             94                break;
             95            }

             96            else
             97            {
             98                Reverse_3_1(str, pSubStr - str);
             99                str = pSubStr + 1;
            100            }

            101        }

            102    }

            103
            104    return res;
            105}

            106
            107void main()
            108{
            109    /*
            110    以下代碼用來(lái)測(cè)試Reverse_1和Reverse_2
            111    char chArr1[] = "";
            112    cout<<Reverse_2(chArr1)<<endl;
            113    
            114    char chArr2[] = "HelloWorld";
            115    cout<<Reverse_2(chArr2)<<endl;
            116    
            117    char chArr3[] = "Hello World";
            118    cout<<Reverse_2(chArr3)<<endl;
            119    
            120    char chArr4[] = "JiShuGe";
            121    cout<<Reverse_2(chArr4)<<endl;
            122    
            123    char chArr5[] = "OuShuGee";
            124    cout<<Reverse_2(chArr5)<<endl;
            125
            126    char chArr6[] = "ab";
            127    cout<<Reverse_2(chArr6)<<endl;
            128
            129    char chArr7[] = "abc";
            130    cout<<Reverse_2(chArr7)<<endl;
            131    */

            132
            133    char chArr1[] = "";
            134    cout<<Reverse_3(chArr1)<<endl;
            135
            136    char chArr2[] = "HelloWorld";
            137    cout<<Reverse_3(chArr2)<<endl;
            138
            139    char chArr3[] = "Hello World";
            140    cout<<Reverse_3(chArr3)<<endl;
            141
            142    char chArr4[] = "Ji Shu Ge";
            143    cout<<Reverse_3(chArr4)<<endl;
            144
            145    char chArr5[] = "This is a string";
            146    cout<<Reverse_3(chArr5)<<endl;
            147
            148    char chArr6[] = "HelloWorld ";
            149    cout<<Reverse_3(chArr6)<<endl;
            150
            151    char chArr7[] = " HelloWorld ";
            152    cout<<Reverse_3(chArr7)<<endl;
            153
            154    char chArr8[] = " Hello World ";
            155    cout<<Reverse_3(chArr8)<<endl;
            156
            157    char chArr9[] = " He llo Wor ld ";
            158    cout<<Reverse_3(chArr9)<<endl;
            159}
            posted on 2010-05-08 17:21 OnTheWay 閱讀(364) 評(píng)論(1)  編輯 收藏 引用 所屬分類(lèi): 算法

            FeedBack:
            # re: 反轉(zhuǎn)字符串
            2010-05-08 17:45 | 小時(shí)候可靚了
            就這樣一點(diǎn)點(diǎn)寫(xiě)下去,就會(huì)很厲害。。。中間不要間斷  回復(fù)  更多評(píng)論
              

            <2010年5月>
            2526272829301
            2345678
            9101112131415
            16171819202122
            23242526272829
            303112345

            常用鏈接

            留言簿(4)

            隨筆分類(lèi)

            隨筆檔案

            友情連接

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            久久不见久久见免费视频7| 久久ww精品w免费人成| 99久久精品毛片免费播放| 亚洲а∨天堂久久精品| 国内精品久久久久久久coent | 久久国产免费| 久久精品国产久精国产| 精品久久人妻av中文字幕| 狠狠色丁香久久婷婷综合蜜芽五月| 精品久久久久久无码人妻蜜桃| 久久综合丁香激情久久| 久久免费视频网站| 免费观看久久精彩视频| 国产精品一久久香蕉国产线看| 2021久久精品国产99国产精品| 青青草原精品99久久精品66| 色综合久久久久综合体桃花网| 久久亚洲精品中文字幕| 久久精品国产亚洲av麻豆小说| 色狠狠久久AV五月综合| 精品久久久久久久无码| 久久se精品一区精品二区| 国产69精品久久久久777| 精品国产一区二区三区久久| 国产精品免费福利久久| 日本久久久久久中文字幕| 91久久精品无码一区二区毛片| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 久久se这里只有精品| 国产午夜精品久久久久九九电影 | 色天使久久综合网天天| 亚洲午夜久久久久妓女影院 | 亚洲精品乱码久久久久久蜜桃| 伊人久久国产免费观看视频| 无码人妻久久一区二区三区免费丨 | 亚洲国产精品狼友中文久久久| 久久国产色av免费看| 精品国产乱码久久久久久郑州公司| 久久久精品午夜免费不卡| 久久伊人中文无码| 亚洲国产精品高清久久久|