题目:
编写一个函数,以字符串作为输入,反转该字符串中的元音字母。
示例 1:
输入: “hello”
输出: “holle”
示例 2:
输入: “leetcode”
输出: “leotcede”
说明:
元音字母不包含字母"y"。
题解:双指针,使用set存储元音字母,双指针遍历判断字串数组中元素是否包含元音字母
package com.ljq.doublepoint;
import java.util.Arrays;
import java.util.Scanner;
/**
* @author 作者 Your-Name:
* @version 创建时间:2019年8月25日 下午5:12:23
* 类说明
*/
public class TwoSum {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()) {
String[] strings = scanner.nextLine().split(" ");
//第一个数为目标和
int target = Integer.parseInt(strings[0]);
int[] numbers = new int[strings.length-1];
for(int i=1;i<strings.length;i++) {
numbers[i-1] = Integer.parseInt(strings[i]);
}
int[] ret = twoSum(numbers,target);
for(int x:ret) {
System.out.print(x+" ");
}
System.out.println();
}
scanner.close();
}
public static int[] twoSum(int[] numbers,int target) {
int[] ret = new int[2];
int i=0,j=numbers.length-1;
int sum = 0;
while(j>i) {
sum = numbers[i]+numbers[j];
if(sum==target) {
ret[0] = i+1;
ret[1] = j+1;
break;
}else if(sum>target) {
j--;
}else {
i++;
}
}
return ret;
}
}
2
package com.ljq.doublepoint;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
/**
* @author 作者 Your-Name:
* @version 创建时间:2019年8月25日 下午10:17:26
* 类说明
*/
public class TwoSumBetter {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()) {
String s = scanner.next();
String ret = reverseVowels(s);
System.out.println(ret);
}
scanner.close();
}
public static String reverseVowels(String s) {
Set<Character> set = new HashSet<Character>(Arrays.asList('a','e','i','o','u','A','E','I','O','U'));
int i=0,j=s.length()-1;
char[] ret = new char[s.length()];
while(i<=j) {
char chi = s.charAt(i);
char chj = s.charAt(j);
if(!set.contains(chi)) {
ret[i++] = chi;
}else if(!set.contains(chj)) {
ret[j--] = chj;
}else {
ret[i++] = chj;
ret[j--] = chi;
}
}
return new String(ret);
}
}