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);
    }
}
  • 17
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值