字符串替换-剑指offer5题

题目:请实现一个函数,把字符串中的每个空格替换成"%20"。例如,输入"we are happy",则输出"we%20are%happy"

正常的思想是正向替换,不断的挪动指针,这样会使时间复杂度在O(n2) ,这时需要逆向思维,先讲偏移量算好,这样会减少挪动指针的次数


void repStr(char repStr[],int length) {
    
    if (repStr == nullptr || length <= 0) {
        return;
    }
    
    int orignLen = 0;
    int numberofBank = 0;
    int i = 0;
    while (repStr[i] != '\0') {
        ++ orignLen;
        if (repStr[i] == ' ') {
           ++ numberofBank;
        }
        ++ i;
    }
    
    int newLen = orignLen + numberofBank * 2;
    
    int indexOfOrgin = orignLen;
    int indexOfNew = newLen;
    
    while (orignLen>=0 && indexOfNew > indexOfOrgin) {
        
        if (repStr[indexOfOrgin] == ' ') {
            repStr[indexOfNew --] = '0';
            repStr[indexOfNew --] = '2';
            repStr[indexOfNew --] = '%';
        }else
        {
            repStr[indexOfNew --] = repStr[indexOfOrgin];
        }
        
        -- orignLen;
    }
    
    
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 请实现一个函数,把字符串中的每个空格替换成"%20"。例如输入"We are happy.",则输出"We%20a...
    913c9536e19a阅读 3,720评论 0 0
  • 最近在准备面试的时候,特意的留意了一下算法,现在越来越多的公司在面试的时候,很看重算法能力。这篇文章,算是自己在阅...
    bigonelby阅读 3,558评论 0 0
  • 闷骚大叔早市伤怀,贤惠媳妇婉语谈情 今起的早,与妻一同赶早市。我们小区后的早市迤逦在工农路两旁道上,两端被时光街与...
    骚年小科阅读 2,571评论 0 1
  • 昨天熬到1点迅速作了新的英超SBC,结果TMD出了第二个凯恩,两个还都不能交易,真是心情复杂……只能等西甲SBC再...
    真昼之月阅读 1,508评论 0 0
  • 文/方妧 关于习惯这个词,在过去的一年里,我写到了好多次。然而,直到现在,我还是不懂它。 就拿写文打卡这件事儿说吧...
    方妧阅读 1,950评论 0 0

友情链接更多精彩内容