字符串反转

简介:
#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;

/*
//解法一:
//时间复杂度为:O(K * N),
//空间复杂度: O(1)
char * Reverse(char *pStr, int len,  int size)
{
    len = len % size;//if len > size, it will be a recyle
    for (int i = size-1; i >= len; i--)
    {
        char tmp = pStr[size-1];
        for (int j = size-1; j >= 1; j--)
        {
            pStr[j] = pStr[j-1];
        }
        pStr[0] = tmp;
       // puts(pStr);
    }
    return pStr;
}
*/


//解法二:
//设src = "1234abc", dest = "abc1234"
//T = "1234", D = "abc"
//则 (T^D^)^ = DT

inline void Swap(char &lps, char &rps)
{
    char tmp = lps;
    lps = rps;
    rps = tmp;
}

void Reverse(char *pSrc, int pos, int size)
{
    char *pBegin = pSrc + pos,
         *pEnd = pSrc +  size- 1;

    while (pBegin < pEnd)
    {
        Swap(*pBegin, *pEnd);
        pBegin ++;
        pEnd --;
    }
    puts(pSrc);
}

int main()
{
    char str[] = "1234abc";
    int len = strlen(str);

    Reverse(str, 0, 4);//反转前4个字符
    Reverse(str, 4, len);//反转后三个字符
    Reverse(str, 0, len);//整体反转

    puts(str);

    return 0;
}

目录
相关文章
|
8天前
|
算法
字符串反转
该段代码源自LeetCode 344题,涉及字符串反转问题,并可延伸至LeetCode 151题(反转单词)。采用双指针方法,通过初始化两个指针分别指向数组的首尾,然后不断交换两指针所指元素,直至两指针相遇,完成字符串或数组的反转操作。示例代码展示了如何使用此方法实现字符串的反转功能。
10 0
|
7月前
反转字符串
反转字符串
46 1
|
7月前
|
Python
ptthon字符串的逆序输出
字符串的逆序输出
42 0
撕碎字符串反转【C】
首先我们对题目进行分析,反转字符串就是将数组中的元素位置进行互换从而达到效果,但是当我们对字符串前后进行互换时,会出现”.gnijieb ekil I"这与我们预先的目标不一致,这个题就特殊在这里。我们要进行二次交换,对字符串中的每个单词进行交换,把每一个单词看作一个整体在进行一次数组交换即可。
71 0
|
算法 C++
在 C/C++ 中反转字符串的不同方法
给定一个字符串,编写一个 C/C++ 程序来反转它。
146 0
C/C++编程题之字符串反转
C/C++编程题之字符串反转
|
机器学习/深度学习 NoSQL Shell
344. 反转字符串
344. 反转字符串
103 0
|
机器学习/深度学习 NoSQL 算法
字符串——344.反转字符串
本专栏按照数组—链表—哈希—字符串—栈与队列—二叉树—回溯—贪心—动态规划—单调栈的顺序刷题,采用代码随想录所给的刷题顺序,一个正确的刷题顺序对算法学习是非常重要的,希望对大家有帮助
字符串——344.反转字符串
Day8——反转字符串、反转字符串||、替换空格、反转字符串里的单词、左旋字符串
Day8——反转字符串、反转字符串||、替换空格、反转字符串里的单词、左旋字符串
106 0