题目 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ sym(t1->right,t2->left)); } }; 2.2 循环 class Solution { public: bool isSymmetric(TreeNode* root 对称的二叉树 递归 class Solution { bool ans = true; public: bool isSymmetric(TreeNode* root) { dfs = r2->val) ans = false; dfs(r1->left,r2->right); dfs(r1->right,r2->left); } }; 循环
一、Abaqus循环对称功能的核心原理循环对称功能是 Abaqus针对周向重复结构(如齿轮、叶轮、法兰)的高效分析工具,核心是利用结构 “绕某一轴线旋转特定角度后重合” 的特性,仅建 1 个 “扇区子模型 使用需满足两个前提:1)结构几何、材料属性、载荷均沿周向循环对称(如齿形重复、载荷为周向均匀扭矩 / 压力);2)存在明确 “循环对称轴线”(如齿轮中心孔轴线),扇区间夹角均匀(360°/n,n 为周向重复次数 二、Abaqus循环对称功能的操作步骤以 “12 齿直齿轮受扭矩分析” 为例,核心流程为 “建立扇区模型→定义循环对称约束→设置载荷边界→提交计算与后处理”四步。 (一)前处理:建立扇区子模型创建几何模型:在 Part 模块新建 “Deformable” 实体零件,仅绘制 1 个齿的扇区(对称角 30°=360°/12),确保扇区两侧面(对称面)垂直于循环对称轴线 使用时需严格遵循对称前提,确保扇区网格匹配、载荷与约束方向合理,才能保证结果精准。对于非对称结构或载荷,需结合子模型、网格自适应等技术,不可强行使用循环对称。
概述: 数字签名和加密依赖于相应的加密算法 自变量:加密前的数据、密钥 因变量:加密后的数据 加密算法分类:根据加密和解密这两种步骤采用的密钥的是否相同进行分类 相同:对称加密 不相同: 非对称加密 非对称加密的应用场景: (1)通过对消息进行加密解决机密性问题(消息的内容仅对发送者期望的接收者可见) (2)通过数字签名实现身份认证和数据一致性 1.消息加密 非对称加密:公钥/私钥 2.数字签名 签名: (1)发送方采用某种算法对整个消息的内容实施哈希计算,得到一个哈希码 (2)发送发使用自己的私钥对该哈希码进行加密,加密后得到的密文就是数字签名 (3)将数字签名和密钥对中的公钥附加到源消息上 (2)数字证书将公钥值绑定到持有对应私钥的个人、设备或服务的标识信息上。 (3)大多数证书基于X.509 V3证书标准,所以称作X.509证书。 (2)创建数字证书 用户对数字证书的认可取决于对证书颁发机构的信息,所以证书颁发机构决定了数字证书的可用范围。
参考的别人的做法,分两种情况 一种是对称的子串长度是偶数,那么从中间2个字符向两边扩展统计 一种是对称的子串长度是奇数,那么从中间1个单独字符向两边扩展统计,包括单独输入一个字符也算对称 ,长度为1 L2-008. ,最长对称子串为"s PAT&TAP s",于是你应该输出11。 输入格式: 输入在一行中给出长度不超过1000的非空字符串。 输出格式: 在一行中输出最长对称子串的长度。 ; int x = i, y = i + 1; while (c[x] == c[y] && x >= 0 && y < len) { --x; ++y; ans += 2; int x = i - 1, y = i + 1; while (c[x] == c[y] && x >= 0 && y < len) { --x; ++y; ans += 2;
我们结合前⾯的代码 如:if(month == 12 || month==1 || month == 2) 如果month == 12,则不⽤再判断month是否等于1或者2,整个表达式的结果也是1(是冬季 我们发现,7除以3本来余数是1,但是我们发现程序运⾏的结果多了⼀⾏“余数是2”的打印。 这是为什么呢? 就⽐如上⾯的代码就执⾏了 case 2 中的语句。 所以在 switch 语句中 break 语句是⾮常重要的,能实现真正的分⽀效果。 输⼊1~5,输出的是“⼯作⽇”; 2. 的结果不是 value1 ,也不是 value2 的时候,就会执⾏ default ⼦句。
,循环结束,所以表达式才会比打印的次数多执行一次 for循环 for循环是c语言中使用循环频率相对较高的 格式: for(表达式1;表达式2;表达式3;) 语句; //和while 表达式2:用于循环结束的条件判断 //1.num1 2.num1<=10 3.printf("%d ",num1); 4. if (num1 == 5) { continue; } printf("%d ",num1); } return 0; } 因为我们先执行了num1++,所以num1就变成了2, 再打印输出第一个循环就为“2”,所以当num1的值为4的时候执行num1++后变成5,再执行IF分支语句就返回循环开头,再进入循环后执行num1++变成6,就输出打印,当num1的值为10的时候就进入循环执行
对称加密和非对称加密 1.什么是对称加密,非对称加密 对称加密是指加解密使用的是同样的密钥 非对称加密是指加解密使用的密钥不同。 2.对称加密的优缺点 对称加密的特点是简单快速。 使用步骤如下: 1)A生成一个随机数作为对称密钥 2)A向B申请公钥 3)B将公钥发给A 4)A使用公钥加密对称密钥,将加密后的结果发给B 5)B使用私钥解密出对称密钥 6)A和B可以通过对称密钥对信息加解密了 2)鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。 ? 3)苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。 ? 2.HTTPS详解 HTTP协议的网站容易被篡改和劫持,如一些不良的运营商会通过代理服务器在你的页面中植入广告等。 因此很多网站选择使用HTTPS协议。 2)首先,客户端向服务器发出加密请求。 ? 3)服务器用自己的私钥加密网页以后,连同本身的数字证书,一起发送给客户端。 ?
2000年10月2日,美国国家标准与技术研究所(NIST--American National Institute of Standards and Technology)选择了Rijndael算法作为新的高级加密标准 myPassword = "OpenSesame"; private byte[] cipherText; private byte[] salt = { 0x0, 0x1, 0x2, (sourceBytes, true); MessageBox.Show(String.Format("Data: {0}{1}Encrypted and Encoded: {2} 为了解释这个过程,请看下面的例子: (1) Alice需要在银行的网站做一笔交易,她的浏览器首先生成了一个随机数作为对称密钥。 (2) Alice的浏览器向银行的网站请求公钥。 (2) 非对称加密使用了一对密钥,公钥与私钥,所以安全性高,但加密与解密速度慢。
(2)发送方和接收方必须用安全的方式来获得保密密匙的副本,必须保证密匙的安全。如果有人发现了密匙,并知道了算法,则使用此密匙的所有通信便都是可读取的。 信息传输: 过程: (1) Alice需要在银行的网站做一笔交易,她的浏览器首先生成了一个随机数作为对称密钥。 (2) Alice的浏览器向银行的网站请求公钥。 采用数字签名,能完成这些功能: (1)确认信息是由签名者发送的; (2)确认信息自签名后到收到为止,未被修改过; (3)签名者无法否认信息是由自己发送的。 总结 (1) 对称加密加密与解密使用的是同样的密钥,所以速度快,但由于需要将密钥在网络传输,所以安全性不高。 (2) 非对称加密使用了一对密钥,公钥与私钥,所以安全性高,但加密与解密速度慢。 (3) 解决的办法是将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通。
对称加密和非对称加密。 对称加密 所谓的对称加密,起归根结底在于加密和解密的密钥是相同的。 不过 DES 的这种加密机制是存在弊端的:由于 DES 会把报文拆开成为一组一组的 64 位数据,64 位二进制数据有 56 位可用,所以数据总量是 2 ^ 56 次方,它的密码生命周期非常段,这个数据总量在现在的计算机世界非常容易被破解 非对称加密 非对称加密其实还有一个叫法是公钥密码加密,非对称加密使用的是不同的加密密钥和解密密钥。 非对称加密出现的原因大概是基于两个方面:一是由于对称加密的密钥分配问题,二是由于对数字签名的要求。 根据这两项原因导致了非对称加密的出现。 非对称加密主要的算法有三种:RSA、DSA、ECDSA,目前使用最广泛、最普遍的非对称加密算法就是 RSA。RSA 采用的是数论中的大数分解方式。
输出样例: 11 解题思路: 我一开始的思路就是暴力破解,用ans来记录最长对称子串的长度,然后通过无脑遍历翻转所有子串来寻找对称子串,不断更新ans最后输出。 嗯,然后我换了个思路,从后往前找第一个相同的字符,找到后就用t2往前、t1往后来寻找对称子串,直到字符不相等或者t1、t2相遇为止。 = s1; reverse(s2.begin(),s2.end()); //将字符串翻转 if(s1 == s2) //若字符串对称 = j; bool flag = true; //用来记录是不是对称字符串 while(t1 <= t2) //判断是不是对称字符串 = str[t2]) //若不是对称字符串 { flag = false;
一、for 循环与 while 循环 for 循环 与 while 循环 可以 f实现 相同的 循环功能 , 二者有如下区别 : 循环条件不同 : while 循环 的 循环控制条件 可以自定义 ffor 循环 只要条件满足 , 就可以执行 循环操作 , 没有次数限制 , 靠开发者设置灵活的循环条件控制循环执行 ; for 循环 需要设定一个循环次数 , 循环完毕后 , 停止循环 ; 二、for 循环基础语法 for 循环语法 : for 临时变量 in 数据集: 循环操作1 循环操作2 循环操作3 将 数据集 中的数据 , 按照顺序 , 逐个取出 , 每次循环时 , 将取出的数据赋值给 临时变量 , 代码示例 """ # 数据集是 "Hello" # 每次遍历取出一个字符 赋值给 c for c in "Hello": print(c) 执行结果 : H e l l o 三、代码示例2 hello: if c == 'o': count += 1 print(f"{hello} 中有 {count} 个字母 o") 执行结果 : Hello World 中有 2
一:对称加密 对称加密指的就是加密和解密使用同一个秘钥,所以叫对称加密。 对称加密只有一个秘钥,作为私钥。 二:非对称加密 非对称加密指的是:加密和解密使用不同的秘钥,一把作为公开的公钥,另一把作为私钥。 公钥加密的信息,只有私钥才能解密。 私钥加密的信息,只有公钥才能解密。 常见的给对称加密: RSA,ECC 区别: 对称加密算法,加解密的效率要高很多。 但是缺陷在于对秘钥的管理上,以及在非安全信道中通讯时,密钥交换的安全性不能保障。 对称加密和非对称加密的区别 一: 对称加密: 加密解密使用同一个密钥,被黑客拦截不安全 二:非对称加密:公钥加密,私钥解密。 著名的RSA加密算法就是用的非对称加密。 简单理解: 对称加密: A和B传输数据,使用同一个密钥,不安全 非对称加密: A和B传输数据, A具有自己的公私钥,B具有自己的公私钥。
对称加密与非对称加密 在数字加密算法中,可划分为对称加密和非对称加密。 对称加密 对称加密算法中对于数据的加密与解密使用同一密钥,即使用相同的密码对内容进行加密解密。 AES(Advanced Encryption Standard):高级数据加密标准,AES算法可以有效抵制针对DES的攻击算法 此外还有Blowfish、IDEA、RC4、RC5、RC6等算法 非对称加密 非对称加密算法需要两个密钥:公开密钥和私有密钥,私钥不能被其他任何人知道,公钥则可以随意公开。 优点 安全性更高,保护通信安全方面有着绝对优势 缺点 加解密速度要远远慢于对称加密,加密算法极其复杂,安全性依赖算法与密钥 常用算法 RSA:是目前最有影响力和最常用的非对称加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击
2.保密性,第三方无法解密。 3.可认证性,消息的接收方可以确定消息是谁发送的。 对称加密 双方使用的同一个密钥,既可以加密又可以解密,这种加密方法称为对称加密,也称为单密钥加密。 另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一秘 钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。 在对称加密算法中常用的算法有:DES、AES等。 (i * 2, i * 2 + 1), 16); int low = Integer.parseInt(hexStr.substring(i * 2 + 1, i * 2 + 2 (i * 2, i * 2 + 1), 16); int low = Integer.parseInt(hexStr.substring(i * 2 + 1, i * 2 + 2 混合使用(非对称加密+数字签名) 首先接收方和发送方都有一对秘钥。 发送方: 1.对消息进行md5等摘要运算,得到消息摘要。 2.使用发送方私钥对消息摘要进行加密,该过程也称作签名。
加密算法一般可以分为两种:一种是对称加密,另一种是非对称加密。 1.对称加密 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。 常用算法:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK …… 缺点: 在A和B共享秘钥的时候容易被黑客窃听 所有人共用一个秘钥,当人数达到上千或上万的时候 ,只要一个人的秘钥泄漏了,其他人都会受到影响,整体加密信息也会被破解 秘钥管理负担大 优点: 算法公开、计算量小、加密速度快、加密效率高 2.非对称加密 对称加密算法在加密和解密时使用的是同一个秘钥; 而非对称加密算法需要两个密钥来进行加密和解密,这两个密钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥) 非对称加密解决了对称加密过程中秘钥容易被破解的问题。 B说: “可以,我的公钥是:*#UYBHH767**IXA,你可以用这个公钥加密你要发的信息” A说: “我加密好了,这是加密后的信息:#SJ2HDSJ35KDH*##5JK5AHD1JKA,你可以用你的私钥解开得到明文
break; case CASE2: ... break; default: ... break; } 循环 for for(;condition;){...} while while(condition) {...} do{...}while(condition); goto 循环可以用 goto实现 break和continue break直接打断循环,continue只打断本次循环 注意 上面所有出现condition的地方,c里定义0表示false,其他非零值都是true,例如:
3.2 for循环 3.2.1 for语句的语法 使用for循环在屏幕上打印1-10的数字。 所以,for循环的风格更胜一筹,for循环使用的频率也最高。 3 4 6 7 8 9 10 3.2.3 for语句的循环控制变量 建议: 不可在for循环体内修改循环变量,防止for循环失去控制。 5); ++x, y++) { printf("hehe\n"); } return 0; } //打印2个hehe 3.2.5 一道笔试题 //请问循环要循环多少次 //2! = 1*2 //3! = 1*2*3 //4!
,表达式1是用于对循环的变量进行初始化,表达是2是对于循环结束条件的判断,表达式3是对于循环变量的调整【这些都是我对于for语句表达式的理解,它们其实在某些C语言书中是有具体名字的,我在这里直接写出作用了 ,我在前面文章也提到过,学习代码并不是等于抄代码,在敲代码的时候一定要自己先思考,自己先写然后在看我写的,一定要有思考过程】,下面继续上例题 例2. 求1到100的数字之间3的倍数的和 上面便是对于例题2代码的实现,正如图所示,这个题算是for循环与if语句之间的配合使用(是不是有一种梦幻联动的感觉,放心,以后这玩意很常见的),这个题运用了例1的思想 2.在某些特定题目for循环的应用会更好 正如小标题所说,在某些特定的条件下for循环是比while循环更好用,下面用一个例题就可以很好的展现出来(温馨提示:这个题目涉及到了数组的知识,我会在以后写关于数组的文章的 (执行语句),后进行循环 ,行了,光讲理论知识不练习是没有用到,下面来进行小小的练习 2.do while循环的相关例题 例6.从屏幕上打印1到10的值 以上就是老三的使用方法,其实懂了上面那个模板以后
文章目录 一、共轭对称、共轭反对称 与 偶对称、奇对称关联 二、序列对称分解定理 证明过程 总结 一、共轭对称、共轭反对称 与 偶对称、奇对称关联 ---- 实序列 : 偶对称 : x(n) = x (-n) 奇对称 : x(n) = -x(-n) 复序列 : 共轭对称 : x(n) = x^*(-n) 共轭反对称 : x(n) = -x^*(-n) 对于 实序列 来说 , 共轭对称 就是 偶对称 ; 对于 实序列 来说 , 共轭反对称 就是 奇对称 ; 二、序列对称分解定理 ---- 任意一个 序列 x(n) , 都可以使用其 共轭对称序列 x_e(n) 与 共轭反对称序列 x_o( ] 共轭反对称序列 x_o(n) 与 原序列 x(n) 之间的关系如下 : x_o(n) = 0.5[x(n) - x^*(-n)] 证明过程 已知 : 任意序列可以由其 共轭对称序列 与 共轭反对称序列 与 共轭反对称序列 , 共轭对称序列 与 原序列 的关系 : x_e(n) = 0.5[x(n) + x^*(-n)] 共轭反对称序列 与 原序列 的关系 : x_o(n) = 0.5[x(n) -