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

代码随想录刷题day25|(字符串篇)55. 右旋字符串

目录

一、题目思路

二、相关算法题目

三、总结


一、题目思路

额外新建一个数组空间:比较简单,先将后k个字符存入新数组的前k个位置,再遍历旧数组剩余length - k个字符,存入新数组的后 length - k个位置;

在原字符串上操作:1.字符串整体反转: g f e d c b a

2.反转前k个字符: f g e d c b a

3.反转后(length - k)个字符:f g a  b c d e

也可以局部反转(先2.3)后再整体反转(1)

二、相关算法题目

55. 右旋字符串

55. 右旋字符串(第八期模拟笔试) (kamacoder.com)

空间复杂度O(n)解法:

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int k = sc.nextInt();
        String s = sc.next();
        char[] chars = s.toCharArray();
        char[] newChars = new char[chars.length];
        for(int i = chars.length - k, j = 0;i < chars.length;i++){
            newChars[j++] = chars[i]; 
        }
        for(int j = k, i = 0;j < newChars.length;j++){
            newChars[j] = chars[i++];
        }
        System.out.println (new String(newChars));
    }
}

 空间复杂度O(1)解法:

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int k = sc.nextInt();
        String s = sc.next();
        char[] chars = s.toCharArray();
        reverse(chars, 0, chars.length - 1);
        reverse(chars, 0, k - 1);
        reverse(chars, k, chars.length - 1);
        System.out.println (new String(chars));
    }
    public static void reverse(char[] chars, int left, int right){
        while(left < right){
            char c = chars[left];
            chars[left] = chars[right];
            chars[right] = c;
            left++;
            right--;
        }
    }
}

三、总结

1.字符串反转,可以使用整体反转+局部反转;

2.如果是左旋转字符串也是相同道理,先整体后局部,只不过局部反转的区间不同; 

相关文章:

  • CPU多级缓存与缓存一致性协议
  • python-leetcode-两两交换链表中的节点
  • tauri2实现监听记住窗口大小变化,重启回复之前的窗口大小
  • Web入门知识补充
  • 关闭超时订单和七天自动确认收货+RabbitMQ规范
  • mysql_符合查询
  • 深度学习驱动下的字符识别:挑战与创新
  • AI大模型学习(三): LangChain(二)
  • 在Django中安装、配置、使用CKEditor5,并将CKEditor5录入的文章展现出来,实现一个简单博客网站的功能
  • java开发工程师面试技巧
  • M系列 Mac如何安装CentOS7虚拟机(附安装包下载链接)
  • AI汽车新风向:「死磕」AI底盘,引爆线控底盘新增长拐点
  • 热管理系统:新能源汽车的 “温度管家”
  • 黑马点评_商品信息缓存模块
  • 使用vue-office报错TypeError: ft.createElementVNode is not a function
  • CSS 盒子模型:网页布局的基石
  • win11系统无法打开软件_组策略无法打开_gpedit.msc不生效_为了对电脑进行保护,已经阻止此应用---Windows工作笔记057
  • 七层模型、局域网与网络技术(高软26)
  • 谈谈 ES 6.8 到 7.10 的功能变迁(1)- 性能优化篇
  • 深度学习驱动的车牌识别:技术演进与未来挑战
  • 巴基斯坦军方:印度导弹袭击已造成至少3人死亡
  • 媒体:不能让追求升学率,成为高中不双休的借口
  • 今年五一档电影票房已破7亿
  • 五一车市消费观察:政策赋能、企业发力,汽车消费火热
  • 罗志田:文学革命的社会功能与社会反响
  • 抗战回望15︱《五月国耻纪念专号》:“不堪回首”