我用c ++编写了一个程序,该程序执行以下操作:首先,用户输入要执行的测试数量。对于每个测试,用户输入一个字符串。程序会分析输入字符串,如果遇到3个或更多相同的CONSECUTIVE字母,它将通过将所有重复字母替换为一个字母和重复次数来缩短短语。否则,字符将像在输入中一样打印在输出上。例如,“ AAABBBBB”的输出为“ A3B5”,对于“ ABCDEF”,其输出为“ ABCDEF”,对于“ AAABBCCDDDDD”,其输出为“ A3BBCCD5”,对于“ AAABBCCCCAAAABBBC”,其输出为“ A3BBC4A4B3C”
我的代码运行良好,但是现在我试图对其进行重写,以包含一个附加变量,该变量是应进行缩短操作的最小重复字符数。我已经确定了如何输入新变量并将其包含在代码中以便进行缩短操作,但是我遇到了最后一种情况的麻烦-可能是最重要的。
在我的工作代码中(对于n = 3),我使用了一个简单的if语句来检查彼此相邻的3个字符是否相同:
for (int i = 0; i < lengthOfWord-2; i++)
{
if ((inputWord [i] == inputWord [i+1]) && (inputWord [i+1] == inputWord [i+2]))
{
// counting the exact number of identical consecutive chars;
// shortening of the inputWord;
}
}
如果用户输入的字符数最少,则显然无法使用此方法。我的问题是:对于用户确定的“ n”(检查“ n”个连续字符是否相同),我可以使用什么来达到类似的效果?