HackerRank - string-reduction【反推】【规律】
HackerRank - string-reduction【反推】
题意
给出一串 只有 字母 a, b, c 组成的字符串,然后没两个不同的字符碰到一起都可以变成另外一个字符,然后变到最后,求最短的字符串长度。
思路
①如果给出的字符串都是相同的字符,那么显然,答案就是这个字符串的长度
②如果不是 那么答案 可能是1 或者是 2
③我们可以反着推回去。就是假如 刚开始的状态的1
我们可以先假定 x = 字符a的数量 y = 字符b的数量 z = 字符c的数量
如果某个字符串 是由 1 推过去的
那么刚开始 x, y, z的数量就是 (1, 0, 0) || (0, 1, 0) || (0, 0, 1)
其奇偶状态就是 奇,偶,偶,
如果一个字符变成连个字符
其奇偶状态就变为 偶,奇,奇
如果继续变
其奇偶状态就变为 奇,偶,偶
所以 如果答案是1 那么 奇偶状态就是 两奇一偶 或者 一奇两偶
如果某个字符串是由 2 推过去的
刚开始的奇偶状态是 偶,偶,偶
如果减少一个字符,加另外两个字符
其奇偶状态就变成 奇,奇,奇
所以 我们可以得出,如果 一个字符串的奇偶状态是
全奇 或者 全偶
那么最后的答案 就是2
如果是其他情况
最后的答案 就是1
AC代码
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <map>
#include <stack>
#include <set>
#include <cstdlib>
#include <ctype.h>
#include <numeric>
#include <sstream>
using namespace std;
typedef long long LL;
const double PI = 3.14159265358979323846264338327;
const double E = 2.718281828459;
const double eps = 1e-6;
const int MAXN = 0x3f3f3f3f;
const int MINN = 0xc0c0c0c0;
const int maxn = 1e5 + 5;
const int MOD = 1e9 + 7;
int main()
{
int t;
cin >> t;
while (t--)
{
string s;
cin >> s;
int n[3] = {0};
int len = s.size();
for (int i = 0; i < len; i++)
{
n[s[i] - 'a'] ++;
}
if (n[0] == len || n[1] == len || n[2] == len)
{
cout << len << endl;
}
else if((n[0] % 2 == 1 && n[1] % 2 == 1 && n[2] % 2 == 1) || (n[0] % 2 == 0 && n[1] % 2 == 0 && n[2] % 2 == 0))
cout << 2 << endl;
else
cout << 1 << endl;
}
}
HackerRank - string-reduction【反推】【规律】的更多相关文章
- dwr2反推
package services; import org.directwebremoting.Browser; import org.directwebremoting.ScriptSessions; ...
- Anipang2反推文档
此文档主要用于一个开发同学尝试学习描述一个产品的基本设计.也许工程师都应该有类似能力. 反推的基础,目前是自己玩过的一些关卡和youtube上的一些关卡通关视频,主要是前120关.(120关后面应该是 ...
- base64随机字符混淆加密、解密-美拍视频地址解密,反推加密算法
用火车头测试采集美拍的数据时无意中发现美拍的视频地址是一段加了混淆字符串的base64代码.如下图 于是好奇之下研究了下解密算法.具体过程省略800字.发现美拍的视频解密是通过js完成,于是找到了具体 ...
- Atitit.通过null 参数 反射 动态反推方法调用
Atitit.通过null 参数 反射 动态反推方法调用 此时,直接使用java apache的ref工具都失效了.必须要自己实现了. 如果调用接口方法的话,就不能使用apache的ref工具,可 ...
- C# 获取pdf长宽,反推pdf图纸类型
业务需求:读取pdf每页的长宽,然后根据国际标准,反推出pdf图纸类型 第一步:下载类库,并引入到项目中 链接:https://pan.baidu.com/s/1ud4-xhfDvi9OKolEBPw ...
- FOJ 1402(dp推规律)
推规律吧 /** 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...
- flask中重定向所涉及的反推:由视图函数反推url
flask中重定向所涉及的反推:由视图函数反推url 例如有视图index() 反推 url的/default # -*- coding: utf-8 -*- from flask import Fl ...
- String reduction (poj 3401
String reduction Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 1360 Accepted: 447 D ...
- 1day漏洞反推技巧实战(1)
学习笔记里的存货(1) 以前看了一篇推特老外做赏金猎人的文章,感触有点深,作者没有写相关漏洞分析,只是说了自己挖了多少个漏洞,这里简单的分析下: 1day漏洞在很多时候至关重要,不管是在红蓝对抗,还是 ...
随机推荐
- css3兼容代码
1. 渐变:.gradient{ width:300px; height:150px; filter:alpha(opacity=100 finishopacity=50 style=1 startx ...
- [Tips]Javascrip计算文件行数
function calcLineCount(filename, callback) { var fs = require('fs'); var fileStream = fs.createReadS ...
- 从git中更新本地需要填写的正则
<IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine On RewriteCond %{REQUEST_FILENA ...
- Prime triplets (Project Euler 196)
original version hackerrank programming version 题目大意是定义了一个正整数的表,第一行是1,第二行是1,2,第三行1,2,3...定义prime tri ...
- Java 反射机制[Field反射]
Java 反射机制[Field反射] 1. 反射概念及功能 反射就是把Java类中的各种成分映射成对应的Java类.比如一个Java类中用一个Class类的对象来表示. 一个类中的组成部分分为成员变 ...
- 第6步:检查grid安装环境
6.1 检查系统包 grid 身份下校验安装环境(检测crs安装环境(sgdb1)) [root@node1 soft]#su – grid [grid@node1 ~]$ cd /soft/grid ...
- 《程序员级别鉴定书》 ----中级.NET开发者
面向接口.面向对象和面向方面编程区别 面向接口编程 是面向对象编程体系中的思想精髓之一 (博客园文章链接面向接口编程详解(一)——思想基础) 面向接口编程 接口是一组规则集合 面向对象编程 对具有相同 ...
- 编写高质量代码--改善python程序的建议(三)
原文发表在我的博客主页,转载请注明出处! 建议十三:警惕eval()的安全漏洞 相信经常处理文本数据的同学对eval()一定是欲罢不能,他的使用非常简单: eval("1+1==2" ...
- Get请求-Test版
package com.fanqi.test; import java.io.DataInputStream; import java.io.IOException; import java.io.I ...
- jquery点击div以外的区域触发事件
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...