记录19
#include <bits/stdc++.h>
using namespace std;
int main(){
int a[30]={},b[30]={};
string s,t;
int cnt;
cin>>s>>t;
for(int i=0;i<s.size();i++) a[s[i]-'a']++;
for(int i=0;i<t.size();i++) b[t[i]-'a']++;
for(int i=0;i<26;i++){
if(a[i]&&b[i]){
cnt+=min(a[i],b[i]);
}
}
cout<<cnt;
return 0;
}
突破点
现在你要在 s,t 中删除一些字符并将它们重新排列使 s=t。
对于 100% 的数据,1≤∣s∣,∣t∣≤105,字符串均由小写字母组成。
这里要注意一点是,题目中只说了重新排列,并没有说是一定是顺序排列,所以只要字符相同就行
思路
- 统计字符串中每个字符出现的个数
- 选取二者中最先的字符数量
代码简析
int a[30]={},b[30]={};
a数组跟b数组分别放两段字符串中出现的字母,字母用下标0~25来一一对应
for(int i=0;i<s.size();i++) a[s[i]-'a']++;
for(int i=0;i<t.size();i++) b[t[i]-'a']++;
s[i]-'a'跟t[i]-'a'计算的是下标,用来表示对应的字母
a[s[i]-'a']++;跟b[t[i]-'a']++;是进行每个字母分别出现的次数
for(int i=0;i<26;i++){
if(a[i]&&b[i]){
cnt+=min(a[i],b[i]);
}
}
if(a[i]&&b[i])用来判断二者都出现的字符
cnt用来记录出现字符最小的那个,因为相同字母的情况只能是小的那个
补充
O2 优化详解
1. O2 优化概述
定义:O2 是编译器优化级别的一种,通常用于在编译代码时平衡代码的执行速度和编译时间。它是一种中等优化级别,旨在提高程序的运行效率,同时保持较短的编译时间。
目标:在不显著增加编译时间的情况下,尽可能提高程序的运行速度和效率。
2. O2 优化的特点
中等优化程度:O2 优化介于 O1(低优化)和 O3(高优化)之间。它提供了比 O1 更多的优化,但不会像 O3 那样进行过于激进的优化,从而避免过长的编译时间和可能的性能问题。
平衡性能和编译时间:O2 优化在提高程序性能的同时,尽量减少编译时间,使其适合大多数开发场景。
3. O2 优化的具体内容
代码优化:
循环优化:包括循环展开、循环合并等,以减少循环的开销。
常量传播:将常量值传播到程序的各个部分,减少运行时的计算。
死代码消除:移除程序中不会被执行的代码,减少程序体积和运行时间。
函数内联:将一些简单的函数直接嵌入到调用处,减少函数调用的开销。
指令调度:优化指令的执行顺序,提高指令的执行效率。
数据优化:
内存分配优化:优化内存分配和释放,减少内存碎片。
数据局部性优化:通过调整数据的存储位置,提高缓存命中率。
数组优化:优化数组的访问和操作,减少访问延迟。
4. O2 优化与 O1、O3 的对比
O1 优化:
特点:低优化级别,主要进行一些基本的优化,如常量传播、死代码消除等。
优点:编译时间短,适合快速开发和调试。
缺点:优化程度较低,程序性能提升有限。
O2 优化:
特点:中等优化级别,进行更多的优化,如循环优化、函数内联等。
优点:在不显著增加编译时间的情况下,显著提高程序性能。
缺点:编译时间比 O1 稍长,但优化效果更好。
O3 优化:
特点:高优化级别,进行非常激进的优化,如循环展开、函数内联等。
优点:程序性能最佳,运行速度最快。
缺点:编译时间长,可能会引入一些复杂的优化,导致程序难以调试。
5. O2 优化的适用场景
开发阶段:在开发过程中,使用 O2 优化可以在较短的编译时间内获得较好的性能,适合频繁编译和调试。
生产环境:对于一些对性能要求较高但对编译时间不太敏感的应用,O2 优化是一个不错的选择。
6. 如何使用 O2 优化
GCC 编译器:
命令示例:
gcc -O2 -o output_file source_file.c说明:
-O2是 GCC 编译器中指定 O2 优化级别的选项。Clang 编译器:
命令示例:
clang -O2 -o output_file source_file.c说明:
-O2在 Clang 编译器中同样用于指定 O2 优化级别。其他编译器:不同的编译器可能有不同的选项来指定 O2 优化级别,具体可以参考编译器的文档。
7. 注意事项
编译时间:虽然 O2 优化的编译时间比 O3 短,但仍然比 O1 长。在开发过程中,可以根据需要选择合适的优化级别。
调试难度:优化后的代码可能会对调试带来一定的困难,因为一些优化可能会改变代码的结构。在调试时,可以暂时关闭优化选项。
性能测试:在使用 O2 优化后,建议进行性能测试,以确保优化后的程序性能符合预期。
8. 总结
O2 优化是一种平衡性能和编译时间的优化方式,适合大多数开发和生产场景。它通过一系列的代码和数据优化,提高程序的运行效率,同时避免了过长的编译时间和复杂的优化问题。在实际开发中,可以根据项目需求和开发阶段选择合适的优化级别。
1464

被折叠的 条评论
为什么被折叠?



