while循环嵌套,不满足外层循环条件时跳出内层循环

1 情形描述

这里使用while双层循环时踩的炕,

描述:双层while循环时,想在不满足外层循环条件时跳出内层循环

上面代码中的第二个方法中,如果内层循环中两个while循环不添加条件left

2 解决方法

在内层也加上外层循环的这个条件

//注意这里外层while循环的条件在进入循环体之后就不能作为内层循环条件
//方法二 实现字符串中元音字符的反转
function reverseVowels(str) {
    let vowels = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'];
    let strToArr = str.split('');
    let left = 0;   //左指针,从左开始遍历
    let right = strToArr.length - 1; //右指针
    let temp;
    while(left < right){
        while (vowels.indexOf(strToArr[left]) === -1 && left < right){  //从left开始向右寻找第一个元音字母
            /*如果这里不设置left< right,将会得到想象不到的结果
            因为这里不设置这个条件,那么开始的时候,left< right,会满足外层循环条件,进入循环体
            但在内层循环的时候,可能会出现left>right,虽然不满足外层条件,但是还是会执行内层循环体
            * */
            //原因:因为满足外层循环条件之后,必须会执行外层循环体一次,之后才会再判断条件
            left++;
        }
        while (vowels.indexOf(strToArr[right]) === -1 && left < right){ //从right开始向左寻找第一个元音字母
            right--;
            //continue;
        }
        temp = strToArr[left];
        strToArr[left] = strToArr[right];
        strToArr[right] = temp;
        left++;
        right--;
    }
    return strToArr.join('');
}

let rel = reverseVowels('leetcode');
console.log(rel)

百里于2020年4月24日

如果有错,请您指出!如有侵权,请联系我删除!

你可能感兴趣的:(js开发过程中遇到的问题,#,双指针,leetcode,js,指针,javascript)