n/2复杂度反转字符串

#include
#include


/*
    s  --> string 
    n  --> string length
*/
void shiftstringone(char *s, int n)
{
    assert(s != NULL);
    char t = s[0];
    for(int i = 1; i < n; i++)
    {
        s[i-1] = s[i];
    }
    s[n-1] = t;
}


/*
    s  --> string 
    n  --> string length
    m  --> move m chars
*/
void shiftstringall(char *s, int n, int m)
{
    assert(s != NULL);
    while(m--)
    {
        shiftstringone(s, n);
    }

}

void rotate(char *s, int n)
{
    assert(s != NULL);
    char t;
    for(int i = 0; i < n/2; i++)
    {
        t = s[i];
        s[i] = s[n-1-i];
        s[n-1-i] = t;
    }
}




int main()
{
    char s[] = "abc1234";


    shiftstringall(s, 7, 6);
    std::cout << s << std::endl;


    char ss[] = "abcd12345";
    std::cout << ss << std::endl;
    rotate(ss, 3);
    std::cout << ss << std::endl;
    rotate(ss+3, 6);
    std::cout << ss << std::endl;
    rotate(ss, 9);
    std::cout << ss << std::endl;


}

你可能感兴趣的:(算法)