问题陈述
有时,当计算机程序使用的颜色数量有限时,它们会使用一种称为抖动的技术。抖动是指您使用由不同颜色组成的图案,以便在一起查看颜色时,它们看起来像另一种颜色。例如,您可以使用黑白像素的棋盘图案来实现灰色的幻觉。
您正在编写一个程序来确定某种抖动颜色覆盖了多少屏幕。给定计算机屏幕,其中每个像素具有特定颜色,以及构成抖动颜色的所有纯色的列表,返回用于构成抖动颜色的屏幕上的像素数。每个像素将由
screen
中的字符表示。screen
和dithered
中的每个字符都是一个代表颜色的大写字母('A'
-'Z'
)。假设
dithered
中包含的任何颜色像素都是抖动颜色的一部分。DEFINITION
班级:
ImageDithering
方法:count
参数:string
,vector <string>
退货:int
方法签名:int count(string dithered, vector <string> screen)
约束
dithered
将包含2到26个大写字母('A'
-'Z'
),包括在内。dithered
中不会有重复的字符。screen
将包含1到50个元素。screen
的每个元素将包含1到50个大写字母('A'
-'Z'
),包括在内。screen
的所有元素都包含相同数量的字符。实施例
0)
"BW" { "AAAAAAAA", "ABWBWBWA", "AWBWBWBA", "ABWBWBWA", "AWBWBWBA", "AAAAAAAA"}
返回:
24
在这里,我们的抖动颜色可能包括黑色(
B
)和白色(W
)像素,组成一个灰色阴影。在图片中,有一个由另一种颜色(A
)包围的抖动灰色方块。1)
"BW" { "BBBBBBBB", "BBWBWBWB", "BWBWBWBB", "BBWBWBWB", "BWBWBWBB", "BBBBBBBB"}
返回:
48
这是相同的图片,但外部颜色替换为黑色像素。虽然实际上,外部像素不会形成抖动颜色,但您的算法仍应假设它们是抖动模式的一部分。
2)
"ACEGIKMOQSUWY" { "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWX", "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWX", "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWX", "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWX", "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWX", "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWX"}
返回:
150
垂直条纹的图片,每隔一条纹被视为抖动颜色的一部分。
3)
"CA" {"BBBBBBB", "BBBBBBB", "BBBBBBB"}
返回:
0
抖动的颜色不存在。
4)
"DCBA" {"ACBD"}
返回:
4
颜色的顺序无关紧要。
我不明白如何计算那些矢量中那些抖动的字符串。
与示例0类似,“ABWBWBWA”行从左侧开始计数3“BW”,从右侧开始计数2“BW”。我该怎么算呢?
答案 0 :(得分:1)
您不计算整个字符串的实例(例如“BW”),您计算单个字符的实例(例如“B”或“W”)。请参阅规范(我的重点):
给定一个计算机屏幕,其中每个像素都有一定的颜色,以及构成抖动颜色的所有纯色的列表,返回屏幕上的像素数,用于制作抖动的颜色。 每个像素将由屏幕中的字符表示。屏幕和抖动中的每个字符将是表示颜色的大写字母('A' - 'Z')。
假设任何抖动中包含的颜色的像素都是抖动颜色的一部分。
示例0在屏幕集上有24个“B”和“W”字符实例;例1总共有48个“B”或“W”字符;您应该能够从示例中推断出这一点,因为示例2包含目标字符串“ACEGIKMOQSUWY”的零实例,但返回值非零。