首页 > 其他分享 >字符串加密

字符串加密

时间:2024-04-22 22:22:45浏览次数:22  
标签:加密 映射 NO count1 字符串 YES count2

描述

这是一个古老的字符串加密方法,给定两个长度不超过100个字符的字符串,判断是否可以把其中一个重排,然后对26个字母做一个一一映射,使得两个字符串相同。 再进行映射:例如 每个字母映射到前一个字母(B→A,C → B,Z → Y,A → Z)。

本题目只判断两个输入字符串是否具有相同字符频度特征,两字串特征相同则输出YES,不同则输出NO。

输入

两个字串,全大写

输出

YES or NO

样例输入

JWPUDJSTVP
VICTORIOUS
HEHE
HAHA
AAA
AAA
ROOM
ROME

样例输出

YES
YES
YES
NO

思路

本题的关键不是在于怎么寻找映射规则(映射规则可千奇百怪,没法去预测),而是在于字符串1和字符串2是否具有的字符个数

code

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<algorithm>
#include<cstring> 
using namespace std;

bool StringSame(string s1, string s2) {
	int count1[26], count2[26];//利用桶排序统计每个字符串的字符个数 
	memset(count1,0,sizeof(count1));
	memset(count2,0,sizeof(count2));//一定要对count1和count2进行初始化,否则就会出错 
	if (s1.size() != s2.size()) return false;
	else {//两字符串长度相同
		for (int i = 0; i <= s1.size(); i++) {
			//统计每个字符串的字符个数
			count1[s1[i] - 'A']++;
			count2[s2[i] - 'A']++;
		}
		sort(count1, count1 + 25);
		sort(count2, count2 + 25);
		for (int i = 0; i < 26; i++) {
			if (count1[i] != count2[i]) return false;
		}
	}
	return true;
}
int main()
{
	string a, b;
	while (cin >> a >> b) {
		if (StringSame(a,b)) cout << "YES" << endl;
		else cout << "NO" << endl;
	}
	return 0;
}

标签:加密,映射,NO,count1,字符串,YES,count2
From: https://www.cnblogs.com/6Luffy6/p/18151699

相关文章

  • 字符串 hash
    前排提示,字符串哈希所需要的数理算力、代码能力都不低。但本质很基础。面对非“树上、图上字符串问题”:一方面:字符串hash的在任何一个模型上都不是理论最优解。大常数致使几乎只能达到\(5\times10^{5}\)每秒。另一方面:字符串hash的通用性、相对优性、相对易性,意味着它......
  • 【每周例题】力扣 C++ 分割字符串
    分割字符串题目 题目分析1.先确定用容器存储,容器的存储结构如下图所示: 2.这个题目的话,第一反应应该是用到动态规划,下面是动态规划的模板:res=[]ans=[]defbacktrack(未探索区域,res,path):if未探索区域满足结束条件:res.add(ans)#深度拷贝......
  • JTCR-处理字符串-15
    Java将字符串作为String类型的对象,不像其他语言,以字符数组的方式实现。字符串创建之后就不可修改。进行修改相关操作返回的是新字符串,原先的字符串不会发生变化。将字符串以不可变的方式实现是为了更有效率。与String对应的StringBuffer和StringBuilder类创建之后可以修......
  • 字符串
    我要成为字符串领域大神!trie树/字典树字典树是什么思想?我们先设定一个根节点,一般为0,每次加入新字符串时都与其相连。比如我们要插入string,看起来就是这样然后如果我们又插入一个strange,就会变成这样也就是说插入的时候可以直接继承志曾经出现过的前缀部分,思想就是这么个思......
  • python中列表、字典和字符串的互相转换
    我们在python使用中经常会用到需要把字符串转为list或者字典,及把list或字典转为字符串(写文件,f.write()只能写字符串,插入数据库时,也只能用字符串)具体使用方法总结了一下:1、字符串转lists='a,b,c'l=s.split(',')  #把字符串s以逗号分割,分割出的list给到l ......
  • SQL Server 中将字符串按数字排序
    方法一:使用CAST或CONVERT我们可以使用CAST或CONVERT函数将字符串转换为数字,然后按照数字进行排序。示例如下:SELECT*FROMYourTableORDERBYCAST(YourColumnASINT)方法二:使用TRY_CAST或TRY_CONVERT如果我们不确定字符串中的所有值都可以成功转换为数字,我们可......
  • python os库将字符串转化为路径
    前言在python编程中,经常需要对文件进行读取操作,而os库提供了一些方法处理文件和目录的路径官方文档如下:https://docs.python.org/zh-cn/3/library/os.html本文主要记录如何将字符串转化为路径1.os.path.join()主要将多个字符串进行拼接,从而形成路径importosos.path.join......
  • 在 C 中打印字符串 - 如何在 C 中打印字符串
    打印字符串是编程中的一项基本操作。它帮助您输出信息,检查和调试您的代码,并向用户显示提示信息。在本文中,您将学习在C中打印字符串的一些不同技术。(本文视频讲解:java567.com)在C中字符串是什么?字符串是一系列字符,如字母、数字或符号,它们被组合在一起。它用于在程序中表示文......
  • 2024-04-21---真题--一个字符串中的最长重复子串(滑动窗口变种)
    真题-一个字符串中的最长重复子串(滑动窗口变种)题目:思路:首先这不是求公共子串,所以不需要动态规划记录。然后一个string相当于就是一个Char[],所以直接滑动窗口来枚举最好做。说白了,这道题就是求abc|abc的问题。其实就是可以看作是一个大的滑动窗口(包含两个小的窗口),并且大的窗口......
  • Python字节转换为字符串 - 如何将字符串转换为字节,以及反向转换
    你可以在Python中使用字节来表示二进制形式的数据。在本文中,你将学习如何将字节转换为字符串,以及反之亦然。在我们看转换之前,让我们谈谈Python中的字节是如何工作的。如果你已经理解了这一点,或者只是对转换感兴趣,你可以跳到下一节。(本文视频讲解:java567.com)Python中的字节是如......