题目地址:
https://www.acwing.com/problem/content/764/
给定两个长度相同的字符串 a a a和字符串 b b b。如果在某个位置 i i i上,满足字符串 a a a上的字符 a [ i ] a[i] a[i]和字符串 b b b上的字符 b [ i ] b[i] b[i]相同,那么这个位置上的字符就是匹配的。如果两个字符串的匹配位置的数量与字符串总长度的比值大于或等于 k k k,则称两个字符串是匹配的。现在请你判断给定的两个字符串是否匹配。
输入格式:
第一行包含一个浮点数
k
k
k,第二行包含字符串
a
a
a,第三行包含字符串
b
b
b。输入的字符串中不包含空格。
输出格式:
如果两个字符串匹配,则输出yes
。否则,输出no
。
数据范围:
0
≤
k
≤
1
0≤k≤1
0≤k≤1
字符串的长度不超过
100
100
100。
代码如下:
#include <iostream>
using namespace std;
int main() {
double k;
cin >> k;
string s, t;
cin >> s >> t;
int cnt = 0;
for (int i = 0; i < s.size(); i++) if (s[i] == t[i]) cnt++;
if ((double) cnt / s.size() >= k) puts("yes");
else puts("no");
return 0;
}
时间复杂度 O ( l a ) O(l_a) O(la),空间 O ( 1 ) O(1) O(1)。