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

Java-02

笔试算法:

41.

回文串

我们称一个字符串为回文串,当且仅当这个串从左往右和从右往左读是一样的。例如,aabbaa、a、abcba 是回文串,而 ab、ba、abc 不是回文串。注意单个字符也算是回文串。

现在,给你一个长度为n的字符串 S,接下来需要将这个串重新排列,组成一个新的字符串 T。

首先,T 一开始为空,之后进行如下操作:从左往右开始,剪切 S 中开头 k 个字符构成的子串。如果该子串是一个回文串,就将其拼接在 T 的前面;否则,将其拼接在 T 的末尾。其中 k 是一个给定的参数。

你需要输出最后 T 是多少。

时间限制:C/C++ 1秒,其他语言2秒

空间限制:C/C++ 256M,其他语言512M

输入描述:

第一行两个正整数 n,k (1<= n,k <= 105),其中 k 是 n 的因子。
第二行输入字符串 S。该字符串仅由小写英文字母组成。

输出描述:

输出一行一个字符串,表示 T。

示例1

输入例子:

12 3
ababaacbaccc

输出例子:

cccababaacba

先进行条件判断,之后是简单的逻辑

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n=sc.nextInt();
        int k=sc.nextInt();
        sc.nextLine();
        String s=sc.nextLine();
        if(k==1){
            String result=new StringBuilder(s).reverse().toString();
            System.out.println(result);
        }
        else if(n<=k){
            System.out.println(s);
        }
        else{
            String result="";
            if(n%k==0){
                for(int i=0;i<n/k;i++){
                    String smallString=s.substring(i*k,i*k+k);
                    String smallReverse=new StringBuilder(smallString).reverse().toString();
                    if(smallReverse.equals(smallString)){
                        result=smallString+result;
                    }else{
                        result=result+smallString;
                    }
                }
            }else{
                for(int i=0;i<n/k;i++){
                    String smallString=s.substring(i*k,i*k+k);
                    String smallReverse=new StringBuilder(smallString).reverse().toString();
                    if(smallReverse.equals(smallString)){
                        result=smallString+result;
                    }else{
                        result=result+smallString;
                    }
                }
                String duo=s.substring(n/k*k,n);
                String duoReverse=new StringBuilder(duo).reverse().toString();
                if(duo.equals(duoReverse)){
                    result=duo+result;
                }else{
                    result=result+duo;
                }
            }
            System.out.println(result);
        }
    }
}

成功AC。

近日总结:

哇哈哈哈今天是我生日,原本自己都要忘记今天是自己的生日了,我妈突然给我发消息说今天是我生日,一看日历,哈哈今天是我生日。

但是始终还是在自己生日这天是感到有些沉闷的,因为我的生日也代表着是妈妈的受难日,第一反应就是想给妈妈送礼物。

而且如果是在家的话就不是一个人了。。。。。。

不过,21岁生日最后还是就这样吧。

 加油加油努力努力!!!

别再老划水摸鱼了,都快到新年了,再划水,还怎么找工作啊!

看看上面那shi一样的代码,我就觉得,真难受啊。

算了,等待会儿回宿舍的路上买点好吃的吧。

呜呜呜想家了呜呜呜

【水中孤独的猫】 


http://www.kler.cn/a/376999.html

相关文章:

  • 国产游戏崛起,燕云十六移动端1.9上线,ToDesk云电脑先开玩
  • vue2日历组件
  • 创建Java项目,并添加MyBatis包和驱动包
  • 结构化日志和集中日志服务
  • 用OpenCV实现UVC视频分屏
  • 多模态大模型初探索:通过ollama部署多模态大模型
  • VS2017+Qt5.12.9+CMake3.30.2编译VTK 9.2.0
  • 基于Springboot+Vue的养老系统(含源码数据库)
  • 数据结构与算法——第四讲:静态链表及双向链表
  • opencv 图像预处理
  • Unity humanoid 模型头发动画失效问题
  • YOLOv6-4.0部分代码阅读笔记-yolo_lite.py
  • 信源熵的概念
  • Java实现图片转pdf
  • ssm+jsp662教务信息平台的设计与实现
  • 如何将MySQL彻底卸载干净
  • 【MySQL】 运维篇—故障排除与性能调优:常见故障的排查与解决
  • STM32之串口字库更新
  • 安装双系统后ubuntu无法联网(没有wifi标识)网卡驱动为RTL8852BE
  • clickhouse运维篇(三):生产环境一键生成配置并快速部署ck集群
  • HTML 基础标签——元数据标签 <meta>
  • vue路由两种数据类型引用
  • vue3中使用mqtt数据传输(封装)
  • 使用Postman进行API测试
  • 论文翻译 | Ignore Previous Prompt: Attack Techniques For Language Models
  • 【OD-支持在线评测】周末爬山(200分)