每周一练系列第五期 把字符变得一样(C++提升计划)(回复可见)
本帖最后由 高山 于 2022-10-7 18:44 编辑好久不见~
今天是每周一练系列第五期
由我和每周一练团队(@zhangjinxuan @元豪 @hveagle )发布static/image/hrline/1.gif
题目描述:
输入两个一样长的字符串s和t。
你每次可以选择s中的一个字符,然后把它换成另一个字符。
请问,最少操作多少次可以把s和t变得一模一样
样例输入:
cupofcoffee
cupofhottea样例输出:
4
正式代码:
**** Hidden Message *****
zhangjinxuan的解法:
**** Hidden Message *****
上一期:质数筛
下一期:BFS
就是有多少个字符不一样嘛 没看懂正解,这是我的答案:
#include <bits/stdc++.h>
using namespace std;
int main() {
string s, t;
cin >> s >> t;
assert(s.size() == t.size());
int l = 0, ans = 0;
for (auto i : s)
ans += i != t;
printf("%d", ans);
}
没看懂正解,是不是写错了? 本帖最后由 hveagle 于 2022-10-27 19:07 编辑
Python版本
import sys
s = input('s:')
t = input('t:')
result = 0
index = 0
if len(s) != len(t):
print('无法执行')
sys.exit()
try:
while 1:
if s != t:
u += 1
index += 1
else:
index += 1
except IndexError:
print(result) {:10_256:} ffff {:5_108:} zhangjinxuan 发表于 2022-10-2 21:36
没看懂正解,是不是写错了?
改改 在帖子末尾加上 上一篇 下一篇(之前是被提醒,现在是我提醒{:5_109:}) zhangjinxuan 发表于 2022-10-2 21:36
没看懂正解,是不是写错了?
传错了 zhangjinxuan 发表于 2022-10-7 14:22
在帖子末尾加上 上一篇 下一篇(之前是被提醒,现在是我提醒)
加了 我一个C来凑热闹
#include <stdio.h>
int main()
{
char s,t;
int count=0,i;
scanf("%s%s",s,t);
for (i=0;s!='\0';i++) if (s!=t) count++;
printf("%d\n",count);
return 0;
} 这个正解的思路也太巧妙了吧 这个必须要学习,谢谢. 看完了代码,发觉有不懂的:C#中的断言(Assert)
查了一下,发现此是一个神器.
冒昧地想了一下,发现断言的用法,最好是用在某个功能的函数起"转折"作用的代码段上,
既不会出现滥用的副作用,又提升了排查隐患的范围,今天至少学到了一个新东西,感谢楼主啊. 支持 zhangjinxuan 发表于 2022-10-2 21:33
没看懂正解,这是我的答案:
正解就是按位枚举,如果不同的话就意味着需要多操作一次,将ret++ {:10_256:} ExiaGN001 发表于 2022-10-14 22:17
正解就是按位枚举,如果不同的话就意味着需要多操作一次,将ret++
原本正解楼主复制错了,没看懂,现在改正了,可以看懂了
页:
[1]
2