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

2025-2-14算法打卡

一,右旋字符串

1.题目描述:

字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。

2.实例:

样例输入:

2
abcdefg 

样例输出:

fgabcde

3.思路:

我们需要将字符串右移n位,字符串相当于分成了两个部分,如果n为2,符串相当于分成了两个部分,右移n位, 就是将第二段放在前面,第一段放在后面,先不考虑里面字符的顺序,是不是整体倒叙不就行了。此时第一段和第二段的顺序是我们想要的,但里面的字符位置被我们倒叙,那么此时我们在把 第一段和第二段里面的字符再倒叙一把,这样字符顺序不就正确了。

4:代码:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = Integer.parseInt(in.nextLine());
        String s = in.nextLine();

        int len = s.length();  //获取字符串长度
        char[] chars = s.toCharArray();
        reverseString(chars, 0, len - 1);  //反转整个字符串
        reverseString(chars, 0, n - 1);  //反转前一段字符串,此时的字符串首尾尾是0,n - 1
        reverseString(chars, n, len - 1);  //反转后一段字符串,此时的字符串首尾尾是n,len - 1
        
        System.out.println(chars);

    }

    public static void reverseString(char[] ch, int start, int end) {
        //异或法反转字符串,参照题目 344.反转字符串的解释
        while (start < end) {
            ch[start] ^= ch[end];
            ch[end] ^= ch[start];
            ch[start] ^= ch[end];
            start++;
            end--;
        }
    }
}

相关文章:

  • 深入理解小波变换:信号处理的强大工具
  • GESP C++二级真题及解析分享
  • 【做一个微信小程序】校园事件页面实现
  • 高效开发!使用Chrome对MoonBit生成的Wasm进行性能分析!
  • dnslog+sqlmap外带数据
  • vue3 pinia状态管理
  • 动态规划----------完全背包问题
  • Android Studio:键值对存储sharedPreferences
  • Qt接入deepseekv3 API 提供openssl 1.1.1g安装包
  • 【matlab】大小键盘对应的Kbname
  • 新产品来袭~适用于新能源电力的霍尔传感器
  • 简述deepseek创始人的创业之路
  • 第三次作业
  • 【详细指南】如何在银河麒麟操作系统上使用DeepSeek?
  • flutter 打包mac应用并安装过程
  • 42.水果销售系统(springbootvue的Java项目[含微信小程序])
  • LabVIEW外腔二极管激光器稳频实验
  • 基于SpringBoot的电影院售票管理系统
  • nextjs的基础了解
  • 【C/C++算法】从浅到深学习--- 二分查找(图文兼备 + 源码详解)
  • 免费做司考真题的网站/抖音广告
  • 银医网站建设方案/北京seo网站推广
  • 万网网站备案流程/总排行榜总点击榜总收藏榜
  • joomla 宠物网站模板/java培训机构
  • 北京网站如何制作/网络优化软件
  • 临朐网站建设建站/软文广告300字范文