只是想知道是否可以在字符串上使用for in循环。不知道是否会有奇怪的结果或不好的做法,但是我的解决方案至少在此示例中有效。
编码练习题。另外,如果有人可以改善我的解决方案,我也乐意为您提供建议。
function firstNonRepeatingLetter(str) {
const lowerStr = str.toLowerCase();
for (let char in lowerStr) {
if (lowerStr.lastIndexOf(lowerStr[char]) === parseInt(char) &&
lowerStr.indexOf(lowerStr[char]) === parseInt(char)) {
return str[char];
}
}
return "";
}
编写一个名为的函数first_non_repeating_letter
,该函数接受string
输入,并返回字符串中任何地方都没有重复的第一个字符。
例子:
firstNonRepeatingLetter('a') => 'a'
firstNonRepeatingLetter('stress') => 't'
firstNonRepeatingLetter('sTreSS') => 'T'
当您的代码正常工作时,建议使用索引来迭代字符串的字符。
但是您的方法通过使用indexOf
和将字符串迭代到很多lastIndexOf
。这可以通过使用存储字符的最后发现索引的循环来更改。
在另一个循环中,将实际索引与相同字符的存储索引进行比较,如果相等则返回。
function firstNonRepeatingLetter(str) {
var lowerStr = str.toLowerCase(),
hash = {},
i;
for (i = 0; i < lowerStr.length; i++)
hash[lowerStr[i]] = i;
for (i = 0; i < lowerStr.length; i++)
if (hash[lowerStr[i]] === i)
return str[i];
return "";
}
console.log(firstNonRepeatingLetter('a')); // a
console.log(firstNonRepeatingLetter('stress')); // t
console.log(firstNonRepeatingLetter('sTreSS')); // T
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句