【发布时间】:2021-11-05 06:25:58
【问题描述】:
为了更好地解释它,假设我得到两个字符串作为输入,然后比较它们是否匹配。但是,如果某些字母被加倍,它仍然会被视为匹配
输入:“alex”,“aaleex” 输出:真
输入:“saeed”、“ssaaedd” 输出:假
输入:“leelee”,“lleeelee” 输出:真
我的 C++ 函数
bool isLongPressedName(string name, string typed) {
if(name == typed) return true;
size_t lenName = name.length();
for(size_t i = 0; i < lenName; i){
//tried to check if typed contains all letters from name
}
//so if contains all letters inside even if its bigger and contains
//long pressed letter return true
return false
}`
这是一个热门网站的作业,所以我也可以在那里查看解决方案,但我希望这里的人可以帮助我更好地理解它。因为我有点坚持自己的想法,并开始思考它的错误方法。
【问题讨论】:
-
纸和笔你会怎么做?
-
用你的纸和笔,试着寻找第一个字符。然后想想在哪里你要搜索下一个字符。重复。
-
这是一个合理的问题要问别人,但我不确定“给我提示,以便我自己解决这个问题”是on-topic for SO。
-
您应该考虑您的先决条件,然后考虑在每个迭代步骤中可能发生的情况。 1. 前提条件:您的正确字符串必须等于或短于您比较的字符串 2. 在每次迭代中会做什么:在每次迭代中,您将移动一个在可能有重复的字符串中进一步添加字符,直到出现无效字符,或者您到达末尾。在您的参考字符串中,如果当前字符和下一个字符不同,您可能会暂停到下一个字符的移动(以防另一个字符串在那里有重复)
-
@DrewDormann 编辑所以它更合理
标签: c++ string loops for-loop function-definition