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

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 收益高的广告联盟有哪些
  • ¥15 Android Studio webview 的使用问题, 播放器横屏全屏
  • ¥15 删掉jdk后重新下载,Java web所需要的eclipse无法使用
  • ¥15 uniapp正式环境中通过webapi将本地数据推送到设备出现的跨域问题
  • ¥15 xui建立节点,显示错误
  • ¥15 关于#单片机#的问题:开始、复位、十进制的功能可以实现,但是切换八进制的功能无法实现(按下按键也没有效果),把初始状态调成八进制,也是八进制可以实现但是切换到十进制不行(相关搜索:汇编语言|计数器)
  • ¥15 VINS-Mono或Fusion中feature_manager中estimated_depth是特征的深度还是逆深度?
  • ¥15 谷歌浏览器如何备份抖音网页数据
  • ¥15 分别有什么商家下面需要非常多的骑手为它工作?
  • ¥15 开机logo到Qt应用起来会黑屏将近两秒时间