我在今天的JavaScript技术面试中被问到这个问题,我失败了,但我仍然无法找到解决方案。我提出的问题和解决方案如下。我已经通过了一些测试用例,但代码仍然不能在所有情况下工作。如果有人能帮我有效地解决这个问题,我将不胜感激。
您将得到一个字符串,即输入,由大小写不同的字母组成。
这些字母应根据大小写相互配对。例如,字母“N”按顺序与字母“a”形成“匹配对”。
规则:
- 第一个字母必须大写。
- 每个大写字母后面都必须跟有小写字母或任何大写字母。
- 当大写字母后接小写字母时,这两个字母将被视为“匹配对”,然后可以从进一步的匹配考虑中忽略。
- 如果这些规则中的任何一个被打破,或者遇到了一个小写字母,而该字母与其最近的未匹配左邻接字母没有创建“匹配对”,则该字母和后面的所有字母都被视为“未匹配”。
输出:您的方法应该返回最后一个匹配的小写字母的从零开始的索引,如果不存在对,则返回-1。
限制:0<输入长度<10000
字符优化方法的运行时间为O(输入长度)。
示例输入#1
阿拉伯联合酋长国
示例输出#1
三
这是我所做的,但并不适用于每个测试用例;
函数stringMatch(str){let word=str.split(“”)let lastIndex;if(单词[0]===单词[0].toUpperCase()){for(设i=0;i<word.length;i++){if(单词[i]===单词[i].toUpperCase()){if(单词[i].toLowerCase()===单词[i+1]||单词[i+1]===词[i+1].toUpperCase(()){lastIndex=i}其他{返回-1}}其他{lastIndex=i}}返回lastIndex}}