摘要:前言今天分享的是反轉(zhuǎn)字符串中的元音字母,原題目要求如下編寫一個(gè)函數(shù),以字符串作為輸入,反轉(zhuǎn)該字符串中的元音字母。
前言
今天分享的是反轉(zhuǎn)字符串中的元音字母,原題目要求如下:
編寫一個(gè)函數(shù),以字符串作為輸入,反轉(zhuǎn)該字符串中的元音字母。
示例 1:
輸入: "hello"
輸出: "holle"示例 2:
輸入: "leetcode"
輸出: "leotcede"說明:
元音字母不包含字母"y"。
補(bǔ)充說明:元音字母為A O E I U a o e i u
解題思路首先要注意,題目里的要求是把反轉(zhuǎn)字符串中的元音字母,以第一個(gè)示例為例子:
從字符串左邊遍歷的時(shí)候,遇到的第一個(gè)元音字母所在的索引為1。
而從字符串右邊右邊遍歷的時(shí)候,遇到的第一個(gè)元音字母所在的索引為4.
所以交換它們的位置、
而我的解題思路是把字符串切割成一個(gè)字符數(shù)組,從左右兩邊向中間逼近的方式訪問數(shù)組。每當(dāng)檢索到左右兩邊的元音字母就交換位置,直到把所有元素都訪問一次后結(jié)束。
實(shí)現(xiàn)代碼/** * 元音字母列表 */ private char[] vowels={"a","o","e","i","u","A","O","E","I","U"}; /** * 反轉(zhuǎn)字符串中的元音字母 * @param s * @return */ public String reverseVowels(String s) { char[] chars=s.toCharArray(); int length=chars.length;//未訪問的元素個(gè)數(shù) int leftIndex=0;//從左邊訪問數(shù)組時(shí)的索引,模擬指針 int rightIndex=length-1;//從右邊訪問數(shù)組時(shí)的索引,模擬指針 boolean leftMatch=false;//是否找到符合條件的元素的標(biāo)志 boolean rightMatch=false;//是否找到符合條件的元素的標(biāo)志 while(length>0){//當(dāng)未訪問元素為0則無需檢索元素 if(isVowel(chars[leftIndex])){//判斷從左邊開始遍歷到元素是否為元音字母 leftMatch=true;//若是,則記錄下標(biāo)識(shí)。停留原位 }else{ ++leftIndex;//向右邊逼近 --length;//未訪問元素個(gè)數(shù)減1 } if(isVowel(chars[rightIndex])){//判斷從左邊開始遍歷到元素是否為元音字母 rightMatch=true;//若是,則記錄下標(biāo)識(shí)。停留原位 }else{ --rightIndex;//向左邊逼近 --length;//未訪問元素個(gè)數(shù)減1 } if(leftMatch && rightMatch){//若左右都找到元音字母 //交換位置上的元素 char tmp=chars[leftIndex]; chars[leftIndex]=chars[rightIndex]; chars[rightIndex]=tmp; //重置標(biāo)志位 leftMatch=false; rightMatch=false; ++leftIndex;//向右邊逼近 --rightIndex;//向左邊逼近 length=length-2;//未訪問元素個(gè)數(shù)減2 } } return String.valueOf(chars); } /** * 判斷是否為元音字母 * @param c * @return */ private boolean isVowel(char c){ for(char vowel:vowels){ if(vowel==c){ return true; } } return false; }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/76843.html
摘要:描述編寫一個(gè)函數(shù),以字符串作為輸入,反轉(zhuǎn)該字符串中的元音字母。示例輸入輸出示例輸入輸出說明元音字母不包含字母。找到所有的元音字母索引,第一個(gè)索引對(duì)應(yīng)的元素和最后一個(gè)索引對(duì)應(yīng)的元素交換,第二個(gè)和倒數(shù)第二個(gè)交換,第三個(gè)和倒數(shù)第三個(gè)交換。 Description Write a function that takes a string as input and reverse only th...
前端LeetCode刷題 下面是已刷的題目的目錄。GitHub:https://github.com/cunzaizhuy...每日打卡更新中,歡迎關(guān)注。 數(shù)組類 26 刪除排序數(shù)組中的重復(fù)項(xiàng) 27 移除元素 35 搜索插入位置 66 加1 80 medium 刪除排序數(shù)組中的重復(fù)項(xiàng)2 88 合并兩個(gè)有序數(shù)組 167 兩數(shù)之和II - 輸入有序數(shù)組 118 楊輝三角 169 easy 求眾數(shù) 1...
摘要:中的算法附道面試常見算法題解決方法和思路關(guān)注每日一道面試題詳解面試過程通常從最初的電話面試開始,然后是現(xiàn)場(chǎng)面試,檢查編程技能和文化契合度。值得記住的數(shù)組方法有和。一個(gè)好的解決方案是使用內(nèi)置的方法。 JavaScript中的算法(附10道面試常見算法題解決方法和思路) 關(guān)注github每日一道面試題詳解 Introduction 面試過程通常從最初的電話面試開始,然后是現(xiàn)場(chǎng)面試,檢查編程...
摘要:在線網(wǎng)站地址我的微信公眾號(hào)完整題目列表從年月日起,每天更新一題,順序從易到難,目前已更新個(gè)題。這是項(xiàng)目地址歡迎一起交流學(xué)習(xí)。 這篇文章記錄我練習(xí)的 LeetCode 題目,語(yǔ)言 JavaScript。 在線網(wǎng)站:https://cattle.w3fun.com GitHub 地址:https://github.com/swpuLeo/ca...我的微信公眾號(hào): showImg(htt...
摘要:第五題對(duì)稱二叉樹難度簡(jiǎn)單給定一個(gè)二叉樹,檢查它是否是鏡像對(duì)稱的。第十六題最大連續(xù)的個(gè)數(shù)難度簡(jiǎn)單給定一個(gè)二進(jìn)制數(shù)組,計(jì)算其中最大連續(xù)的個(gè)數(shù)。第十八題平方數(shù)之和難度簡(jiǎn)單給定一個(gè)非負(fù)整數(shù),你要判斷是否存在兩個(gè)整數(shù)和,使得。 寫在前面 最近忙著調(diào)教新裝備,沒有及時(shí)的寫題解,但是沒有在偷懶沒刷題喔~來認(rèn)真整理下最近做的題目~ 之前考慮按tag來刷題,后來收到了推薦的leetcode題解,就根據(jù)上...
閱讀 3260·2021-10-13 09:40
閱讀 3778·2019-08-30 15:54
閱讀 1342·2019-08-30 13:20
閱讀 3025·2019-08-30 11:26
閱讀 507·2019-08-29 11:33
閱讀 1125·2019-08-26 14:00
閱讀 2390·2019-08-26 13:58
閱讀 3399·2019-08-26 10:39