• 【算法编程 C++ Python】字符串替换


    题目描述

    请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
     
    C++使用string,python使用replace都非常简单。
    除去上述方法,C++如果在原地址替换需要从后向前替换。
    C++:
    #include <iostream>
    using namespace std;
    class Solution {
    public:
        void replaceSpace(char * str, int length) {
            // 在str原地址上替换,先遍历空格数量,再从后向前替换(从前向后替换费时费力)
            int n = strlen(str);// 原字符串长度,不包含
            int space_num = 0;
            for (int i = 0; i < n; i++) {
                if (str[i] == ' ') {
                    space_num++;
                }
            }
            int n_new = n + space_num*2; //一个空格变成三个字符%20
            while ((n>=0)&&(n_new>n))
            {
                cout << str[n] << endl;
                // 从''开始
                if (str[n] == ' ') {
                    str[n_new--] = '0';
                    str[n_new--] = '2';
                    str[n_new--] = '%';
                }
                else {
                
                    str[n_new--] = str[n];
                }
                n--;
            }
        }
    };
    
    
    int main()
    {
        Solution obj;
        char* str = "hello world";
        int n = strlen(str);// 字符串长度,不包含
        obj.replaceSpace(str, n);
        cout << str << endl;
        cin.get();
        cin.get();
        return 0;
    }

    C++的代码在vs2015会有写入冲突,还是用string比较好不会有这种冲突。。但这段代码在牛客网上是通的……

    Python:

    # -*- coding:utf-8 -*-
    class Solution:
        def replaceSpace(self, s):
            s_new = ""
            n = len(s)
            for i in xrange(n):
                if s[i]==' ':
                    s_new += "%20"
                else:
                    s_new += s[i]
            return s_new
            
            
    if __name__ == '__main__':
        obj = Solution()
        s = "hello world"
        print obj.replaceSpace(s)

    在牛客网上测试时间与空间占用:

    C++: 3ms,488k

    Python:19ms,5728k

  • 相关阅读:
    android Service Activity三种交互方式(付源码)
    Android优化
    Android 开发性能优化之SparseArray(三)
    Android 开发性能优化之SparseArray(二)
    ListView封装实现下拉刷新和上拉加载(方式2)(转载)
    Android——谷歌官方下拉刷新控件SwipeRefreshLayout(转)
    Android 6.0
    Android AppCompatActivity去掉actionbar fullScreen
    决心
    Translucent System Bar 的最佳实践
  • 原文地址:https://www.cnblogs.com/xiangfeidemengzhu/p/8903851.html
Copyright © 2020-2023  润新知