题目链接

数颜色

题目描述

给定一个由 'R', 'G', 'B' 三种字符构成的字符串,代表一道彩虹。要求计算出这道彩虹中每种颜色出现的次数,并以 (R,G,B) 的格式输出。

解题思路

这是一个基础的计数问题。

我们的目标是统计字符串中 'R'、'G'、'B' 三种字符的出现次数。

我们可以声明三个整型变量,分别用来记录红色()、绿色()和蓝色()的数量。

接着,我们遍历输入的字符串中的每一个字符。在遍历过程中,根据当前字符的种类,增加对应颜色计数器的值。

遍历结束后,我们就得到了每种颜色的总数。最后,按照 (R,G,B) 的格式将这三个计数器的值输出即可。

代码

#include <bits/stdc++.h>

using namespace std;

int main() {
    string s;
    cin >> s;
    int r_count = 0;
    int g_count = 0;
    int b_count = 0;
    for (char c : s) {
        if (c == 'R') {
            r_count++;
        } else if (c == 'G') {
            g_count++;
        } else {
            b_count++;
        }
    }
    cout << "(" << r_count << "," << g_count << "," << b_count << ")" << endl;
    return 0;
}
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        int rCount = 0;
        int gCount = 0;
        int bCount = 0;
        for (char c : s.toCharArray()) {
            if (c == 'R') {
                rCount++;
            } else if (c == 'G') {
                gCount++;
            } else {
                bCount++;
            }
        }
        System.out.println("(" + rCount + "," + gCount + "," + bCount + ")");
    }
}
s = input()
r_count = s.count('R')
g_count = s.count('G')
b_count = s.count('B')
print(f"({r_count},{g_count},{b_count})")

算法及复杂度

  • 算法:遍历计数
  • 时间复杂度:,其中 是输入字符串的长度。我们需要遍历一次字符串。
  • 空间复杂度:,我们只使用了常数个变量来存储计数结果。