C++版浙大PAT乙级1078(20分)
发布日期:2021-05-17 06:37:05 浏览次数:21 分类:精选文章

本文共 1124 字,大约阅读时间需要 3 分钟。

压缩容易,解压难一点。解压的时候一个字符的重复个数可能是10以上,要对有数字和没数字的字符进行标记。

以下是基于用户需求开发的C++程序,用于处理字符串中的重复字符和数字标记逻辑。

	#include 
using namespace std;
int main() {
char ch;
string str, res;
cin >> ch;
getchar();
getline(cin, str);
if(ch == 'C') {
int p = 0, q = 0;
while (q < str.size() + 1) {
if (str[p] == str[q]) {
q++;
} else {
if (q - p > 1) {
res += to_string(q - p);
}
res += str[p];
p = q;
}
}
} else if (ch == 'D') {
string num;
int n, flag = 0;
for (int i = 0; i < str.size(); i++) {
if (isdigit(str[i])) {
num += str[i];
flag = 1;
}
if (!isdigit(str[i]) && flag == 1) {
n = atoi(num.c_str());
for (int j = 0; j < n - 1; j++) {
res += str[i];
}
flag = 0;
num = "";
}
if (!isdigit(str[i]) && flag == 0) {
res += str[i];
}
}
}
cout << res << endl;
return 0;
}

以上代码实现了两个功能:

  • 当字符选为'C'时,程序会扫描字符串并记录重复字符的位置和次数
  • 当字符选为'D'时,程序会识别数字字符并标记连续出现的数字字符
  • 代码逻辑清晰,主要包含以下几个部分:

    • 输入处理
    • 字符选定后执行不同的业务逻辑
    • 重复字符扫描(C选项)
    • 数字字符处理(D选项)
    • 结果输出

    程序结构简洁易懂,适合处理文本字符的重复标记和数字信息提取需求。

    上一篇:C++版浙大PAT乙级1079(20分)
    下一篇:C++版浙大PAT乙级1077(20分)

    发表评论

    最新留言

    做的很好,不错不错
    [***.243.131.199]2025年04月23日 14时07分27秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章