7.24扣...
知识补充:
1.StringBuffer
StringBuffer
是 Java 中一个用于表示可修改的字符序列的类。它继承自 AbstractStringBuilder
并实现了 CharSequence
接口。与 String
类不同,StringBuffer
是线程安全的,意味着它可以在多线程环境下安全地使用,而无需进行外部同步。但是,这种线程安全性是通过牺牲性能来实现的,因为每次修改字符串时都会进行同步处理。
主要特点和用途
- 可变性:与
String
的不可变性不同,StringBuffer
是可变的。你可以随时修改它的内容。 - 线程安全:由于
StringBuffer
的方法大多是同步的,因此它是线程安全的。但这也意味着在多线程环境中,它的性能可能不如非同步的StringBuilder
。 - 性能:在单线程环境下,
StringBuilder
的性能通常优于StringBuffer
,因为StringBuilder
没有同步的开销。 - 主要方法:
StringBuffer
提供了很多方法来修改其内容,如append()
、insert()
、delete()
、replace()
等。
2.s.substring
在Java中,s.substring(firstK, secondK)
方法的作用是从字符串 s
中提取一个子字符串。这个子字符串从索引 firstK
(包含)开始,到索引 secondK
(不包含)结束左开右闭。索引在字符串中是从0开始的,这意味着第一个字符的索引是0,第二个字符的索引是1,依此类推。
3.代码实现:
package te; import java.util.Scanner; public class text { public static void main(String[] args) { System.out.println("请输入字符串:"); Scanner sc = new Scanner(System.in); String s = sc.next(); System.out.println("请输入k:"); int k = sc.nextInt(); reversestring(s, k); } private static void reversestring(String s, int k) { StringBuffer res = new StringBuffer(); int length = s.length();//得出长度 int start = 0;//设置反转数组起始位置 while (start < length) {//满足反转条件时 StringBuffer temp = new StringBuffer();//设置临时的可修改的字符序列,用于反转start到firstK之间的字符 int firstK = (start + k > length) ? length : start + k;// 找到k处和2k处 int secondK = (start + (2 * k) > length) ? length : start + (2 * k);// 与length进行判断,如果大于length了,那就将其置为length temp.append(s.substring(start, firstK)); //将s中start到firstK之间的字符加入反转专用字符序列 res.append(temp.reverse());//反转专用字符序列中的字符加入最终res if (firstK < secondK) { // 如果firstK到secondK之间有元素,这些元素直接放入res里即可。 res.append(s.substring(firstK, secondK)); } start += (2 * k);//反转起始位置向前走2k } System.out.println(res); } }
原文地址:https://blog.csdn.net/weixin_51721783/article/details/140651529
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!