EODVT 2023-01-30 21:13 采纳率: 33.3%
浏览 33
已结题

C++算法-哞哞操作

因为贝茜厌倦了玩她通常的文本字符串,其中唯一的 字符是“C”,“O”和“W”,农夫约翰给她Q
新字符串 (1≤Q≤100
),其中唯一的字符是“M”和“O”。 在字符“M”和“O”中最喜欢的词显然是“MOO”,所以她想要 以将每个Q
使用以下操作将字符串放入“MOO”中:

将第一个或最后一个字符替换为其相反的字符(以便“M” 变为“O”,“O”变为“M”)。
删除第一个或最后一个字符。
不幸的是,贝西很懒惰,不想执行比 绝对必要。对于每个字符串,请帮助她确定最小值 形成“MOO”或输出所需的操作数−1
如果这是 不可能的。

输入格式(输入从终端/标准到达):
输入的第一行包含的值Q
.
下一个Q
每行输入由一个字符串组成,每个字符串都包含其字符 “M”或“O”。每个字符串至少包含 1 个字符,最多包含 100 个字符。

输出格式(打印输出到终端/标准输出):
在单独的行上输出每个输入字符串的答案。
示例输入:
3
MOMMOM
MMO
MOO
示例输出:
4
-1
0
一系列4
将第一个字符串转换为“MOO”的操作为 遵循:

Replace the last character with O (operation 1)
Delete the first character (operation 2)
Delete the first character (operation 2)
Delete the first character (operation 2)
第二个字符串不能转换为“MOO”。第三个字符串已经 “MOO”,因此无需执行任何操作。

  • 写回答

3条回答 默认 最新

  • CodeBytes 2023-01-31 10:25
    关注

    仅供参考,代码如下:

    
    #include <bits/stdc++.h>
    using namespace std;
    
    int n, m, cnt;
    char s[105];
    
    int main()
    {
        cin >> n;
        while (n--)
        {
            cin >> (s + 1);
            m = strlen(s + 1);
            cnt = 0;
            for (int i = 1; i <= m; i++)
            {
                if (s[i] == 'O')
                    cnt++;
            }
            if (cnt % 2 == 0)
                cout << m / 2 - 1 << endl;
            else
                cout << -1 << endl;
        }
        return 0;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月4日
  • 已采纳回答 2月4日
  • 修改了问题 1月30日
  • 创建了问题 1月30日

悬赏问题

  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了