CF 118A.String Task(Java实现)

题目分析

输入一个字符串,遍历每一个字符,如果是元音字母就删除,辅音字母就在其前面增加一个'.',且所有字母输出都是小写。

思路分析

将输入的字符串改为字符数组,考虑到任意位置插入的情况,所以主要选择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);//输出结果
        }
    }
}

感谢您能够看到这里,一起见证小何同学的算法学习,如果您有不同的见解,希望能得到您的指点和点悟;如果您是和我一样的同学,也希望这篇文章能对您有所帮助。

相关推荐
勤奋的知更鸟1 分钟前
Java编程之组合模式
java·开发语言·设计模式·组合模式
千|寻1 分钟前
【画江湖】langchain4j - Java1.8下spring boot集成ollama调用本地大模型之问道系列(第一问)
java·spring boot·后端·langchain
虾球xz7 分钟前
CppCon 2015 学习:3D Face Tracking and Reconstruction using Modern C++
开发语言·c++·学习·3d
林鸿群10 分钟前
C#子线程更新主线程UI及委托回调使用示例
开发语言·c#
爱编程的喵16 分钟前
深入理解JavaScript原型机制:从Java到JS的面向对象编程之路
java·前端·javascript
on the way 12327 分钟前
行为型设计模式之Mediator(中介者)
java·设计模式·中介者模式
保持学习ing29 分钟前
Spring注解开发
java·深度学习·spring·框架
techzhi30 分钟前
SeaweedFS S3 Spring Boot Starter
java·spring boot·后端
异常君1 小时前
Spring 中的 FactoryBean 与 BeanFactory:核心概念深度解析
java·spring·面试