【亚洲必赢官网】反转字符串中的元音字母,第八十三题

字符串元音字母反转,别的的不变,字符串元音字母反转

思路:用ArrayList寄存元音字母(因为有个contains方法),并记下元音的序号和放进栈里面(反转类似栈先进后出),里面用到string与char数组的转移

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.Stack;

public class reverseWords {

    public static String reverseVowels(String s) {
        Stack<String> replace=new Stack<String>(); //利用栈先进后出
        List<Character> contain=new ArrayList<Character>(); //存储元音字母
        int count=0; //元音字母个数
        contain.add('a');
        contain.add('e');
        contain.add('i');
        contain.add('o');
        contain.add('u');
        contain.add('A');
        contain.add('E');
        contain.add('I');
        contain.add('O');
        contain.add('U');
        char[] ch=s.toCharArray();
        for(int i=0;i<s.length();i++){
            if(contain.contains(ch[i]))
                count++;
        }
        if(count<2) return s; //元音小于2个不用反转
        int[] num=new int[count]; //记录元音字母位置
        int j=-1;
        for(int i=0;i<ch.length;i++){
            if(contain.contains(ch[i])){
                num[++j]=i;
                replace.push(String.valueOf(ch[i])); //进栈
            }   
        }
        for(int i=0;i<count;i++){
                ch[num[i]]=replace.pop().charAt(0);
        }
        return String.valueOf(ch);   //char数组转string不可以用toString() 
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scanner=new Scanner(System.in);
         while(scanner.hasNext()){
           String str=scanner.next();
           System.out.println(reverseVowels(str));
       }
    }
}

 

思路:用ArrayList贮存元音字母(因为有个contains方法),并记下元音的序号和放进栈…

编辑三个函数,以字符串作为输入,反转该字符串中的元音字母。

  1. 主题材料汇报

编辑三个函数,以字符串作为输入,反转该字符串中的元音字母。

示例 1:

【亚洲必赢官网】反转字符串中的元音字母,第八十三题。  给一个字符串,将字符串中上下呼应的元音字母进行反转,即侧边四分之二的元音字母与右边手八分之四元音字母镜像反转

示例 1:

输入: "hello"输出: "holle"
Example 1:Input: "hello"Output: "holle"Example 2:Input: "leetcode"Output: "leotcede"
输入: "hello"输出: "holle"

示例 2:

  1. 解题代码

    class Solution: def reverseVowels(self, s: str) -> str: vowels = [‘a’,’e’,’i’,’o’,’u’,’A’,’E’,’I’,’O’,’U’] lens = len i = 0 j = lens-1 list_s = list while i < j : #保障侧面索引不当先侧边 if list_s[i] not in vowels : #剖断侧边的元音字符,假设对应地方的字符不是元音字母,则索引加一 i += 1 #continue if list_s[j] not in vowels : #决断侧边的元音字符,若是对应地点的字符不是元音字母,则索引减一 j -= 1 #continue if list_s[i] in vowels and list_s[j] in vowels : #决断当次循环下索引i, j对应的字符是或不是同不常候是元音字母,假如是,则调换个方式置 list_s[i], list_s[j]= list_s[j], list_s[i] i += 1 j -= 1 return "".join #将字符串的列表转变为字符串重返

示例 2:

输入: "leetcode"输出: "leotcede"

亚洲必赢官网,  

输入: "leetcode"输出: "leotcede"

说明:元音字母不分包字母”y”。

  

说明:
元音字母不含有字母”y”。

解题思路

class Solution:    def reverseVowels:        """        :type s: str        :rtype: str        """        start = 0        end = len-1        if end <= start:            return s        tmp = list        limit = 'aeiouAEIOU'        while start < end:            if tmp[start] not in limit:                start += 1            elif tmp[end] not in limit:                end -= 1            else:                tmp[start],tmp[end]=tmp[end],tmp[start]                start += 1                end -= 1        return ''.join

那道题是让大家反转字符串中的元音字母,可是没说大小写,所以元音字母总共包涵aeiouAEIOU这个,我们作为字符串存储。然后大家创造多少个类别分别存款和储蓄给定字符串的元音字母和它们的岗位,并把字符串转换成列表。最后从字符串列表中获得元音字母和职位,再以倒序插入到原本的职位,再次来到拼接的字符串。

class Solution: def reverseVowels: """ :type s: str :rtype: str """ from collections import deque vowel = 'aeiouAEIOU' s_vowel = deque() index = deque() s = list for i in range: if s[i] in vowel: index.append s_vowel.append for i in index: s[i] = s_vowel.pop() return ''.join
网站地图xml地图