PTA_L1-058 6翻了 (15分)
发布日期:2021-05-14 16:34:28 浏览次数:16 分类:精选文章

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

要解决这个问题,我们需要将一连串的“6”字符按照一定规则进行替换。具体来说,如果连续的“6”超过3个但不超过9个,则将其替换为“9”;如果连续的“6”超过9个,则将其替换为“27”。以下是一个解决方案:

方法思路

  • 初始化变量:使用一个计数器来跟踪当前连续的“6”字符的数量。
  • 遍历字符串:逐个字符遍历输入字符串。
  • 更新计数器:如果当前字符是“6”,则增加计数器;否则,根据计数器的值决定如何处理当前字符。
  • 处理替换逻辑:当遇到非“6”字符时,检查计数器的值并进行相应的替换操作。
  • 输出结果:将处理后的字符串输出。
  • 解决代码

    #include 
    #include
    using namespace std;int main() { string s; getline(cin, s); int len = s.size(); int ans = 0; for (int i = 0; i < len; ++i) { if (s[i] == '6') { ans++; } else { if (ans > 3 && ans <= 9) { for (int j = 0; j < ans; ++j) { cout << '9'; } ans = 0; } else if (ans > 9) { for (int j = 0; j < 9; ++j) { cout << '6'; } for (int j = 0; j < ans - 9; ++j) { cout << '9'; } ans = 0; } else if (ans <= 3) { for (int j = 0; j < ans; ++j) { cout << '6'; } ans = 0; } cout << s[i]; } if (ans <= 3) { for (int j = 0; j < ans; ++j) { cout << '6'; } } } return 0;}

    代码解释

    • 输入处理:使用getline函数读取输入字符串,确保不受空格影响。
    • 计数器初始化ans变量用于记录当前连续的“6”字符数量。
    • 遍历字符串:使用for循环逐个字符遍历字符串。
    • 字符处理:如果当前字符是“6”,则增加计数器;否则,根据计数器的值决定如何处理字符。
    • 替换逻辑:根据计数器的值,决定将“6”替换为“9”还是“27”,并处理必要的字符输出。
    • 输出结果:最终将处理后的字符串逐字符输出。
    上一篇:PTA_L1-059 敲笨钟 (20分)
    下一篇:PTA_L1-011 A-B (20分)

    发表评论

    最新留言

    路过按个爪印,很不错,赞一个!
    [***.219.124.196]2025年04月17日 15时09分30秒