zoukankan      html  css  js  c++  java
  • 一道题目,原位置替换字符串

    对于字符串增加类型:

    先算出新的长度,然后一个一个赋值:

    #include <iostream>
    #include <string>
    
    void change_word(char *a, int len) {
        if (a == NULL) {
            return;
        }
        int count = 0;
        for (int i=0; i<len; i++) {
            if (a[i] == ' ') {
                count+=2;
            }
        }
    
        int newi = len + count - 1;
        for (int i=len-1; i>=0; i--) {
            if (a[i] != ' ') {
                a[newi--] = a[i];
            }
            else {
                a[newi--] = '3';
                a[newi--] = '2';
                a[newi--] = '1';
            }
        }
        return;
    }
    
    int main() {
        std::cout << "Hello, World!" << std::endl;
    
        char ch[100];
        strncpy(ch, "hi hi hihihi hi", 16);
        std::cout << ch << std::endl;
    
        change_word(ch, 16);
        std::cout << ch << std::endl;
    
        return 0;
    }
    View Code

    对于字符串长度减少,直接替换。(略)

    对于重复字符只留一个,下面的解法,直接位置放置:

    #include <iostream>
    #include <string>
    
    void change_word(char *a) {
        if (a == NULL) {
            return;
        }
    
        int newi = 0;
        int i = 0;
        while (a[i] != '') {
            if (i==0 || a[i] != a[i-1]) {
                if (newi != i) {
                    a[newi] = a[i];
                }
                newi++;
            }
            i++;
        }
        a[newi] = '';
    
        return;
    }
    
    int main() {
        std::cout << "Hello, World!" << std::endl;
    
        char ch[100];
        strncpy(ch, "hi hhi hiiiiihhhihi hi", 23);
        std::cout << ch << std::endl;
    
        change_word(ch);
        std::cout << ch << std::endl;
    
        return 0;
    }
    View Code
  • 相关阅读:
    GET和POST两种基本请求方法的区别
    GET与POST类型接口
    TCP连接与断开详解(socket通信)
    QC02
    QC01
    tcp三次握手和四次挥手
    ssh整合
    redis主从切换
    缓存解释(一级缓存,二级缓存)
    cxf整合spring代码
  • 原文地址:https://www.cnblogs.com/charlesblc/p/6414369.html
Copyright © 2011-2022 走看看