2021/01/20~2021/01/22三天收获
今天先记录一下这一道题:
题目如下这是一道比较重要的题目:难度为“High”,先来看看题目吧!
- 在提示“Hint”里面已经把要点给写出来了,这道题看似复杂,可以将它划分为两步来操作:
1.先实现输出距离
2.再实现整体功能
一、先实现输出距离:
利用两个变量a,b;a就是第一行的输入,b放在循环中,当b为“#”时结束循环;
其实长度之差加上对应位置上字母不同的位数就是距离。先求出a、b两个字符串的长度之差。然后在判断在对应位置上字母不同的位数。最后输出每次的距离,判断是否正确。
二、
通过题目中,“输出和目标字符串s最相似的字符串,若有多个都最相似,则按照出现顺序依次输出”,我判断出:不能像在第一步中b在循环内每一次判断完后,下一次循环之前,将字符串b做一次清空,必须将所有输入的b存起来,才能在结尾的时候将距离最小的所有b输出。所以我用了一个数组来存储所有输入的b。
此外,为了存a和每一个b的距离,还需要利用一个数组num[ ]这些距离。这里让我想起来了可以用结构体来实现这个功能,b数组的对应偏移量刚好是num数组的偏移量,如:i=6,那么b[i]就是第七次循环时输入的字符串,对应的num[i]就是b[i]和a的距离。
当得到所有的num后,就到进行判断的过程了。遍历所有的num,记录最小值。
再遍历一次,num[i]恰好等于最小值的时候,输出b[i]。就ok。