关于用函数实现压缩字符串

##问题描述
##压缩字符串,压缩规则:
#1、仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc"。
#2、压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"。
##我的代码

#include
#include
using namespace std;
void stringZip(const char* pInputStr, int lInputLen, char* pOutputStr) {
    int n = 1;
    int j = 0;
    for (int i = 0; i <= lInputLen; i++) {
        if (pInputStr[i] == pInputStr[i + 1]) {
            n++;
            continue;
        }
        else{
            if (n != 1) {
                char temp = n - '0';
                pOutputStr[j] = temp;
                pOutputStr[j++] = pInputStr[i];
                j++;
            }
            else if(n==1){ 
                pOutputStr[j] = pInputStr[i];
                j++;
            }
        }
        n = 1;
    }
    pOutputStr[j] = '\0';
}
int main()
{
    char a[1000];//原始字符串
    cin >> a;
    int len=strlen(a);//字符串长度
    char b[1000];//压缩后的字符串
    stringZip(a, len, b);
    cout << b << endl;
    return 0;
}


##输入aaabbc 输出结果:a蘠蘡
##期望输出:3a2bc
##不知道哪里有问题,求解答!!!

  1. char temp = n + '0';
  2. pOutputStr[j++] = pInputStr[i]; => pOutputStr[++j] = pInputStr[i];
  • 请看👉 :使用列表实现循环数据结构
  • 除此之外, 这篇博客: 虚拟存储器中的 页式虚拟存储器 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • 以页为单位的虚拟存储器,称为页式虚拟存储器。
    • 它的虚拟空间跟主存空间都将被划分为相同大小的页。
    • 主存中的页,称为实页,虚存中的页,称为虚页。
    • 虚拟地址被分为两个字段,虚页号和页内偏移。
    • 为了对每个虚拟页的存放位置,存取位置,使用情况,修改情况等等进行等进行说明,操作系统在主存中给每个进程都生成一个页表。
    • 因此,每个虚拟页表都对应有一个页表项。页表是一张存放在主存中的,虚拟页与实页对照的映射表。
    • 其中存放位置字段用来建立虚拟页与实页之间的映射,进而进行地址转换。有效位用来表示对应页面是否存在。

    在这里插入图片描述

  • 您还可以看一下 AI100讲师老师的朋友圈爆款背后的计算机视觉技术与应用课程中的 朋友圈爆款背后的计算机视觉技术与应用小节, 巩固相关知识点