当前位置: 首页 > news >正文

蓝桥备战国奖题后总结(2)

一、压缩字符串

public static void main(String[] args) {Scanner scan = new Scanner(System.in);String str=scan.nextLine();char[] ch=str.toCharArray();int flag=1;int num=0;for(int j=0;j<ch.length-1;j++){if(ch[j]==ch[j+1]){num=1;}if(num==0&&j==ch.length-2){System.out.println("NO");return;}}for(int i=0;i<ch.length-1;i++){if(ch[i]==ch[i+1]){flag++;}if((ch[i]!=ch[i+1])||(i==ch.length-2)){if(flag!=1){System.out.printf(ch[i]+""+flag);}else{System.out.printf(ch[i]+"");}flag=1;}}scan.close();}

额,初见题目,没什么思路,就暴力解题了,在这里判断字符串是否为压缩字符串,还多使用一个循环,感觉有点蠢,观看别人的题解后,收获了一下内容:

1.1、StringBuilder 类

        StringBuilder 是 Java 中的一个类,它可以用来动态地创建字符串。与 String 类不同的是,StringBuilder 对象是可变的,可以在其中添加、删除或修改字符序列。这使得 StringBuilder 在需要频繁修改字符串的情况下比 String 更加高效。

下面是一个简单的例子,演示了如何使用 StringBuilder 类来动态地创建字符串:

StringBuilder sb = new StringBuilder();
sb.append("Hello");
sb.append(" ");
sb.append("world");
String result = sb.toString(); // result = "Hello world"

        在这个例子中,我们首先创建了一个空的 StringBuilder 对象 sb,然后使用 append 方法向其中添加了两个字符串。最后,我们使用 String 方法将 StringBuilder 对象转换为一个普通的字符串。

        除了 append 方法之外,StringBuilder 还提供了许多其他有用的方法,例如 insertdeletereplace 等等。这些方法可以让我们方便地对字符串进行各种操作。

1.2、StringBuffer 类

        StringBuffer是Java中的一个类,用于处理字符串的可变对象。它允许我们在不创建新的对象的情况下修改字符串。与String类不同,StringBuffer类是可变的,因此可以在其上执行添加、插入、删除和替换等操作。

下面是一个简单的例子,演示了如何使用StringBuffer类:

StringBuffer sb = new StringBuffer("Hello");
sb.append(" World");
System.out.println(sb); // 输出 "Hello World"

        在上面的例子中,我们首先创建了一个StringBuffer对象,并将其初始化为"Hello"。然后,我们使用append()方法将" World"添加到字符串的末尾。最后,我们打印出StringBuffer对象的值,它现在包含"Hello World"。

        除了append()方法之外,StringBuffer类还提供了许多其他方法,例如insert()delete()replace()等,可以用于在字符串中插入、删除和替换文本。这些方法使得StringBuffer类非常有用,特别是在需要频繁修改字符串的情况下。

二、拼数

public static void main(String[] args) {Scanner scan = new Scanner(System.in);scan.nextLine();String[] st = scan.nextLine().split(" ");Arrays.sort(st,(x,y)->(y+x).compareTo(x+y));StringBuffer bf=new StringBuffer();for(int i=0;i<st.length;i++){bf.append(st[i]);}System.out.println(bf);scan.close();}

3\4\5段代码是一个字符串数组按照一定规则进行排序的代码。首先,通过scan.nextLine()方法获取用户输入的一行字符串,然后通过split(" ")方法将字符串按照空格分割成一个字符串数组。接着,使用Arrays.sort()方法对字符串数组进行排序,排序规则是将两个字符串拼接起来,比较它们拼接后的大小。如果拼接后的字符串x+y大于拼接后的字符串y+x,则认为x大于y,反之则认为y大于x。这里使用了lambda表达式来实现Comparator接口的compare()方法,简化了代码的书写。 

2.1、Arrays.toString() 方法

Arrays.toString() 方法是Java中 Arrays 类提供的一个静态方法,用于将数组转换为字符串输出。它的作用是将数组中的元素按照顺序连接成一个字符串,并用方括号括起来。例如:

int[] arr = {1, 2, 3, 4, 5};
System.out.println(Arrays.toString(arr));

输出结果为:

[1, 2, 3, 4, 5]

这个方法可以方便地输出数组的内容,也可以用于调试程序时查看数组的值。

2.2、Arrays.equals() 方法

该方法是用于比较两个数组是否相等的方法。它的语法如下:

public static boolean equals(type[] a, type[] b)

其中,a和b是要比较的两个数组,type 是数组元素的数据类型。该方法会比较两个数组的长度和每个元素的值是否相等,如果两个数组长度不同或者有任何一个元素的值不同,那么该方法会返回false,否则返回 true

下面是一个使用 Arrays.equals() 方法比较两个整型数组的例子:

int[] arr1 = {1, 2, 3};
int[] arr2 = {1, 2, 3};
int[] arr3 = {1, 2, 4};boolean isEqual1 = Arrays.equals(arr1, arr2); // 返回 true
boolean isEqual2 = Arrays.equals(arr1, arr3); // 返回 false

在上面的例子中,isEqual1 的值为 true,因为 arr1 arr2 的长度和每个元素的值都相等;而isEqual2 的值为 false,因为 arr1 arr3 的第三个元素的值不同。


http://www.mrgr.cn/news/49474.html

相关文章:

  • 关于multiprocessing使用freeze_support()方法
  • FastAPI中的流式响应:实现实时数据传输
  • 根据Vue对比来深入学习React 下 props 组件传值 插槽 样式操作 hooks 高阶组件 性能优化
  • 深入Semantic Kernel:插件开发与实践应用(进阶篇)
  • 【FFmpeg系列】:图片处理
  • AI开发-三方库-Hugging Face-Model
  • 自动化测试-selenium
  • Spring学习——SpringAOP
  • 【LeetCode热题100】分治-快排
  • 刷c语言练习题8(牛客网)
  • BWA -A -B -O -E参数控制比对得分
  • java项目之精准扶贫管理系统源码(springboot+mysql+vue)
  • AI开发-三方库-Hugging Face-Pipelines
  • 【C++】--内存管理
  • 视频剪辑必备!优质视频素材获取途径
  • 数据结构与算法——Java实现 35.求数据流中的第K大元素
  • 攻防世界2
  • 安全可靠测评结果公告(2024年第1号)
  • 常见开源组件的详解
  • ```python