• 21.左旋转字符串[LeftRotateString]


    【题目】

    定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字符串AB1234 左旋转2位得到字符串1234AB。请实现字符串左旋转的函数。要求时间对长度为n的字符串操作的复杂度为O(n),辅助内存为O(1)

    k=2

    AB1234 =>1234AB

    【思路】

    AB=>BA

    1234=>4321

    BA4321=>1234AB

    【代码】

     C++ Code 
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     

    char *LeftRotateString(char *pStr, int k)
    {
        
    if (pStr != NULL)
        {
            
    int n = strlen(pStr);
            
    if (k > 0 && n > 0 && k < n)
            {
                
    // reverse first part
                Reverse(pStr, pStr + k - 1);
                
    // reverse second part
                Reverse(pStr + k, pStr + n - 1);
                
    // reverse whole part
                Reverse(pStr, pStr + n - 1);
            }
        }
        
    return pStr;
    }

    参考】

    http://zhedahht.blog.163.com/blog/static/2541117420073993725873/

    个人学习笔记,欢迎拍砖!---by hellogiser

    Author: hellogiser
    Warning: 本文版权归作者和博客园共有,欢迎转载,但请保留此段声明,且在文章页面明显位置给出原文连接。Thanks!
    Me: 如果觉得本文对你有帮助的话,那么【推荐】给大家吧,希望今后能够为大家带来更好的技术文章!敬请【关注】
  • 相关阅读:
    MSXML应用总结
    MsXml创建和解析XML示例
    解决IAR无法跳转的问题
    总结4
    1012
    1010
    acm学习总结
    1005
    1004
    1006
  • 原文地址:https://www.cnblogs.com/hellogiser/p/3738770.html
Copyright © 2020-2023  润新知