
题目分析
输入一个字符串,遍历每一个字符,如果是元音字母就删除,辅音字母就在其前面增加一个'.',且所有字母输出都是小写。
思路分析
将输入的字符串改为字符数组,考虑到任意位置插入的情况,所以主要选择LinkedList,并遍历判断如果是元音就remove。如果是辅音,首先判断是否是大写,如果是大写就调用set方法改为小写,然后在其位置add('.')。
代码
java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
char[] arr=sc.nextLine().toCharArray();//存值并改为char数组
LinkedList<Character> list=new LinkedList<>();//使用LinkedList
ArrayList<Character> alist=new ArrayList<>(Arrays.asList('A','O','Y','E','U','I'));//用于存储元音字符
for (char c:arr){//遍历数组
list.add(c);//赋值给list
}
for (int i =0;i< list.size();i++){//遍历list
if (alist.contains(Character.toUpperCase(list.get(i)))){//如果属于元音字母
list.remove(i);//就删除
i--;//由于删除后长度会改变所以i跟着改变
}else {//如果是辅音字母
if (Character.isUpperCase(list.get(i))){//先判断是不是大写
list.set(i,Character.toLowerCase(list.get(i)));//如果是就改为小写
}
list.add(i,'.');//再在原来的位置添加一个'.',由于是链表,后续元素自动排列
i++;//同理改变长度后改变i
}
}
for (char c:list){//遍历list
System.out.print(c);//输出结果
}
}
}
感谢您能够看到这里,一起见证小何同学的算法学习,如果您有不同的见解,希望能得到您的指点和点悟;如果您是和我一样的同学,也希望这篇文章能对您有所帮助。