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

devtools/2024/10/19 9:42:07/

一、压缩字符串

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类非常有用,特别是在需要频繁修改字符串的情况下。

二、拼数

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.ppmy.cn/devtools/125314.html

相关文章

Vue3实现面板分割

Vue3实现面板分割 下面是将你提供的 Vue 组件使用 SCSS&#xff0c;并以 Vue 3 的组合式 API 形式的面板分割代码。 1、建立组件相关的文件夹 2、将下面代码拷贝到index.vue中 <template><div class"g-split" ref"gSplit"><!-- 水平方向…

折叠翼弹射无人机产品技术详解

折叠翼无人飞行器系统采用储存、运输、发射一体化设计&#xff0c;飞行器平台可以折叠入筒&#xff0c;采用筒式气体弹射方式发射&#xff0c;其搭载可见光/红外双光载荷与战斗部&#xff0c;可以对敌方中大型坦克、装甲或防御工事进行打击。产品技术详解如下&#xff1a; 一、…

计算机挑战赛3

老式的计算机只能按照固定次序进行运算&#xff0c;华安大学就有这样一台老式计算机&#xff0c;计算模式为AB#C&#xff0c;和#为输入的运算符(可能是、-或*&#xff0c;运算符优先级与C一致)&#xff0c;现给出A&#xff0c;B&#xff0c;C的数值以及和#对应的运算符&#xf…

Qt事件——鼠标事件

通过label来显示各种事件 鼠标按下事件 //按下显示坐标 void MyLabel::mousePressEvent(QMouseEvent * ev) {int i ev->x();int j ev->y();//判断按下的鼠标键位if (ev->button() Qt::LeftButton) {qDebug() << "LeftButton";}else if (ev->bu…

Pytest中fixture的scope详解

pytest作为Python技术栈下最主流的测试框架&#xff0c;功能极为强大和灵活。其中Fixture夹具是它的核心。而且pytest中对Fixture的作用范围也做了不同区分&#xff0c;能为我们利用fixture带来很好地灵活性。 下面我们就来了解下这里不同scope的作用 fixture的scope定义 首…

SAP SD学习笔记09 - 受注传票中的不完全Log 和 Business Partner(取引先机能)

好久没写SD了&#xff0c;今天继续写。 上一章讲了SD的如下知识 - SD的售前的流程&#xff08;引合和見積&#xff08;询价和报价&#xff09;&#xff09; - 数据流的概念&#xff0c;主要就是后传票可以参照前传票&#xff0c;以实现数据的流动&#xff0c;减少输入 - Co…

python之详解列表

有序的可变容器&#xff0c;可以存储不同类型的元素。用中括号[]表示。 1、列表的查找访问 1.1、通过下标查找。 与字符串类似&#xff0c;列表也可通过 列表名[index] 的方式查找其中的元素。 索引的初始值为0&#xff0c;最大值为列表长度-1。 示例&#xff1a; list1 …

【linux】信号(下)

8. 阻塞信号 (一)信号其他相关常见概念 实际执行信号的处理动作称为信号递达(Delivery)信号从产生到递达之间的状态,称为信号未决(Pending)进程可以选择阻塞 (Block )某个信号被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作(即被阻塞的信…