【问题标题】:Find longest substring of vowels查找最长的元音子串
【发布时间】:2018-12-14 02:12:02
【问题描述】:

我输入了用户键入字符串的位置,我需要在该字符串中找到最长的元音链并将其渲染出来。我自己试过了,但我不知道该怎么做。这是我的代码:

vowelHandler = () => {
    let input = document.getElementById('input2'); 
    const hasVowel = /[aeiouAEIOU]/g;
    let letters = []; 
    let vowels = ''; 
    let count = 0;
    let res = 0;
    letters = input.value.match(/[aeiouAEIOU]/g); 
    if(hasVowel.test(letters)) { 
      for(let i = 0; i <= letters.length; i++) {
        if(hasVowel.test(letters[i])) {
          count++;
          res = Math.max(res, count);
        }else {
          res = Math.max(res, count);
          count = 0;
        }
      }
      letters = letters.join(' ');
      vowels = letters.substring(letters[res]);
      document.getElementById('num2').innerHTML= vowels;
    }else {
      document.getElementById('num2').innerHTML= 'String does not contain vowels.';
    }
  }
<input type='text' id='input2'/>
<button onClick={this.vowelHandler}>CLICK</button>
<p id='num2'></p>

【问题讨论】:

    标签: javascript html arrays regex


    【解决方案1】:

    您可以用空格替换字符串中不是元音的所有内容,用空格分割字符串,然后检查这些子字符串中的哪一个是最长的。

    function getLongestVowelSubstring(s) {
      const separateVowels = s.replace(/[^aeiou]/ig, ' ').split(' ');
    
      const longest = separateVowels.reduce((longest, vowelGroup) => {
        return vowelGroup.length > longest.length ? vowelGroup : longest;
      }, '');
    
      return longest;
    }
    
    console.log(getLongestVowelSubstring('get the looongest vowel substring'));

    【讨论】:

      【解决方案2】:

      试试这样的:

      vowelHandler = () => {
          let input = document.getElementById('input2'); 
          const hasVowel = /[aeiouAEIOU]+/g;
          const letters = input.value.match(hasVowel);
          if (letters) {
              const longest = letters.reduce((acc, val) => acc.length > val.length ? acc : val, '');
              document.getElementById('num2').innerHTML= longest;
          } else {
              document.getElementById('num2').innerHTML= 'String does not contain vowels.';
          }
      }
      

      【讨论】:

        【解决方案3】:

        使用这个工作示例:

        let vowels = ['a', 'e', 'i', 'o', 'u']
        function largestVowel(inputStr) {
          let largestStr = '';
          let tempVowelStr = '';
          inputStr.split('').forEach(char => {
            if (vowels.includes(char.toLowerCase())) {
              tempVowelStr += char;
              if (tempVowelStr.length > largestStr.length) {
                largestStr = tempVowelStr;
              }
            } else {
              tempVowelStr = '';
            }
          })
          return (largestStr.length === 0) ? 'String does not contain vowels.' : largestStr;
        }
        
        console.log(largestVowel('ertyyfouigdg'));
        
        console.log(largestVowel('sdfsfsf'));
        
        console.log(largestVowel('sdeefsfiaeosf'));

        复杂性:O(n)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-04-16
          • 2012-10-07
          • 2016-08-01
          • 2015-01-02
          • 1970-01-01
          • 2016-08-11
          • 1970-01-01
          • 2011-01-23
          相关资源
          最近更新 更多