反轉字符串

反轉字符串

s = "123456"
打印出654321

這裏面有2種想法:

  1. 改變字符串s = “654321”,直接打印
  2. 逆序打印字符串,不改變字符串

這裏我都簡單實現了一下:

void reverse_c(char* str) //c語言實現
{
    if (*str == '\0')
        return;
    reverse_c(str+1);
    putchar(*str);
}

void reverse_cpp(const string& s) //c++實現
{
    int size = s.size();
    if (size == 0)
        return;
    else if (size == 1)
        cout << s[0];
    else
    {
        reverse_cpp(s.substr(1));
        cout << s[0];
    }
}
下面是改變字符串

void change_str(char* str) //循環
{
    int left = 0;
    int right = strlen(str) - 1;
    while (left < right)
    {
        swap(str[left++], str[right--]);
    }
}

void change_str_r(char* str) //遞歸
{
    int size = strlen(str);
    if (size == 0)
        return;
    else if (size == 1)
        return;
    else
    {
        char tmp = str[0];
        str[0] = str[size-1];
        str[size-1] = '\0';
        change_str_r(str+1);
        str[size-1] = tmp;
    }
}
發佈了96 篇原創文章 · 獲贊 119 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章