我们规定对一个字符串的shift操作如下:

2023-11-16

shift(“ABCD”,0)=”ABCD”
shift(“ABCD”,1)=”DABC”
shift(“ABCD”,2)=”CDAB”
换言之,我们把最左侧的N个字符剪切下来,按序附加到了右侧。
给定一个长为n的字符串,我们规定最多可以进行n次向左的循环shift操作。如果
shift(string,x)=string(0<=x< n),
我们称其为一次匹配(match)。求在shift过程中出现匹配的次数。


好了,题目叙述完毕

解题思路:
这里用了简单粗暴的方法,定义一个交换函数,进行按题所示的’shift’操作,把所有的结果记录在HashMap中,对应的value记录的是该字符串出现的次数,并在ArrayList中也记录一次,用于在最后的在Map中查找出现次数的依据。
代码如下:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;


public class Main {

    public static void main(String[] args) {
        Main ss=new Main();
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入字符串:");
        String s=sc.nextLine();//从键盘读取要处理的字符串
        int max=0;//匹配次数
        HashMap<String,Integer>hm=new HashMap<String,Integer>();
        ArrayList<String>list=new ArrayList<String>();
        for(int i=0;i<s.length();i++)
        {
            String temp=ss.swap(s, i);
            if(hm.containsKey(temp)){//如果map中已经包含该单词,则将其个数+1
                 int x = hm.get(temp);
                 x++;
                 hm.put(temp, x);
             }else{  //如果map中没用包含该单词,代表该单词第一次出现,则将其放入map并将个数设置为1
                 hm.put(temp, 1);
                 list.add(temp);
             }

        }
        for(String xx:list)//对字符串所有可能出现的左移效果进行遍历,记录最大匹配次数
        {
            int i=hm.get(xx);
            if(i>max)
                max=i;

        }

        System.out.println(max);
        sc.close();//关闭流

    }



    public String swap(String str,int num)//把一个字符串按题目要求左移并返回
    {

        String s1=str.substring(num, str.length());
        StringBuffer result=new StringBuffer(s1);
        result.append(str.substring(0, num));
        return result.toString();
    }
}

按照题示,输入byebyebye,输出3
这里写图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我们规定对一个字符串的shift操作如下: 的相关文章

  • 2017-百度-安全岗笔试

    2017 baidu spring 1 请回答如下端口默认对应的服务 以及在渗透测试过程中我们可以从哪些角度考虑其安全问题 端口 21 22 873 1433 3306 6379 11211 端口 服务 说明 21 FTP 匿名访问 弱口令
  • 《面试准备》c/c++ 数组实现循环queue

    代码 include
  • 2013小米笔试题--异形数

    题目 一个数组里 除了三个数是唯一出现的 其余的都出现偶数个 找出这三个数中的任一个 比如数组元素为 1 2 4 5 6 4 2 只有1 5 6这三个数字是唯一出现的 我们只需要输出1 5 6中的一个就行 分析 一般这样的题目采用异或的办法
  • 简单理解磁盘结构

    本文首发于 Guanngxu 的个人博客 磁盘到底是怎样工作的 一文理解硬盘结构 数据库系统总会涉及到辅助存储 大多都是磁盘 因为它们能够存储大量需要长期保存的数据 因此我们有必要先了解了解磁盘的相关知识 根据机械原理 存储器的容量越大其速
  • 渗透测试技术题(面试、笔试)

    本篇文章主要涉及一下几个方面 java view plain copy 对称加密非对称加密 什么是同源策略 cookie存在哪里 可以打开吗 xss如何盗取cookie tcp udp的区别及tcp三次握手 syn攻击 证书要考哪些 DVW
  • 2020秋招找工作总结

    找完工作闲了很久 现在还是想写点什么 留给未来的自己看看吧 本人双非 渣硕 面试岗位 C C 软件开放岗 嵌入式软件开放岗 从时间先后顺序面试了以下几家公司 网易游戏 雷火 广州腾讯 成都浦发银行 成都华为 成都汇顶科技 成都烽火 成都紫光
  • 网易2018校招编程题集合4

    小易有一个长度为n的整数序列 a 1 a n 然后考虑在一个空序列b上进行n次以下操作 1 将a i放入b序列的末尾 2 逆置b序列 小易需要你计算输出操作n次之后的b序列
  • 【编程笔试】美团2021校招笔试-通用编程题第2场(附思路及C++代码)

    导览 练习地址 小团的配送团队 不一样的逆序数 小团的旅行路线 小团的车辆调度 总结 练习地址 点此前往练习 小团的配送团队 小团是美团外卖的区域配送负责人 众所周知 外卖小哥一般都会同时配送若干单 小团在接单时希望把同一个小区的单子放在一
  • 《面试准备》C++工厂模式

    工厂模式 参考 https www cnblogs com huiz p 8232783 html 简单工厂模式 在工厂类做判断 从而创建相应的产品 当增加产品时需要修改工厂类 include
  • 记录一次笔试题(R语言)

    记录一次笔试题 R语言 data lt read csv 银行 csv 1 取出李姓 法1 record xingshi c FALSE FALSE FALSE FALSE for i in 1 4 if substring data i
  • 10种排序算法总结(Python 版)

    文章目录 1 冒泡排序 O n 2 2 快速排序 O nlogn 3 简单插入排序 O n 2 4 希尔排序 O n log n 5 简单选择排序 O n 2 6 堆排序 O n log n 7 归并排序 O n log n 8 计数排序
  • 《面试准备》c/c++贪心算法实例

    贪心算法问题1 西红柿首富的烦恼 王多鱼获得了一笔的奖金X 要求购买最少的商品把钱花光 即没有零钱剩下 否则奖金会被没收 输入 一个整数k 商品的种类 每个种类商品个数不限 第i类商品的价值a i 一个整数m 奖金总额 输出 最少商品数量
  • 2022多益网络春招之最后一场--软件工程师笔试

    题型 选择 填空 简答 算法 凭借自己的回忆说一下题目类型 选择题 涉及到的题型主要是Java基础的题目 例如分析代码的时间复杂度 一些排序算法的时间复杂度 二叉排序树 sql语句 很简单 散列表 链表 什么数据结构具有记忆功能 连接查询
  • 【编程笔试】美团2021校招笔试-通用编程题第5场(附思路及C++代码)

    导览 练习地址 修改大小写 式子求值 争夺地盘 公司管理 总结 练习地址 点此前往练习 修改大小写 在小美的国家 任何一篇由英文字母组成的文章中 如果大小写字母的数量不相同会被认为文章不优雅 现在 小美写了一篇文章 并且交给小团来修改 小美
  • c/c++笔试面试题_6

    几个简单的c 面试题 2006 10 14 14 50 今天偶然看见这几个面试题 很有感触 想起一年前自己的求职经历 1 引言 本文的写作目的并不在于提供C C 程序员求职面试指导 而旨在从技术上分析面试题的内涵 文中的大多数面试题来自各大
  • 【编程笔试】美团2021校招笔试-通用编程题第10场(附思路及C++代码)

    导览 练习地址 淘汰分数 正则序列 公司食堂 最优二叉树II 练习地址 点此前往练习 淘汰分数 某比赛已经进入了淘汰赛阶段 已知共有n名选手参与了此阶段比赛 他们的得分分别是a 1 a 2 a n 小美作为比赛的裁判希望设定一个分数线m 使
  • 《面试准备》中兴2018笔试题

    include
  • 笔试

    给定两个字符串s1和s2 如果s1删除若干个字符后变成s2 则称s2为s1的子串 求s2在s1中的起始位置的最大值 输入描述 只有一行 s1 s2 s1和s2用空格隔开 s1和s2度不会含有空格 s1和s2的长度均大于1且小于256 输出描
  • 《面试准备》C++链表操作3(合并两个有序链表)

    include
  • 【笔试】操作系统知识点整理

    一 操作系统概述 1 操作系统的主要功能 进程与处理机管理 作业和进程调度 进程控制和进程通信 存储管理 内存分配 地址映射 内存保护和内存扩充 设备管理 缓冲区管理 设备分配 设备驱动 设备无关性 文件管理 文件存储空间的管理 文件操作的

随机推荐

  • ENVI入门系列教程---二、图像分析---13. 遥感动态监测

    every blog every motto God helps those who help themselves https blog csdn net weixin 39190382 type blog 0 前言 遥感变化检测就是从不
  • EasyExcel,让excel导入导出更加简单

    EasyExcel EasyExcel是一个基于Java的简单 省内存的读写Excel的开源项目 在尽可能节约内存的情况下支持读写百M的Excel github地址 https github com alibaba easyexcel JA
  • 数据降维算法

    文章目录 效果一览 文章概述 部分源码 参考资料 效果一览 文章概述 数据降维算法 Matlab 基于局部费歇尔判别 LFDA 的分类数据降维可视化 部分源码
  • OpenCV Android以及扩展模块opencv_contrib的编译

    OpenCV和OpenCV contrib模块4 5 x版本的编译 环境准备 Ubuntu 16 04 1 环境变量 export ANDROID HOME work android sdk export ANDROID NDK HOME
  • 【allegro 17.4软件操作保姆级教程一】软件操作环境设置

    个人主页 highman110 作者简介 一名硬件工程师 持续学习 不断记录 保持思考 输出干货内容 目录 1操作环境准备 1 1单位设置 1 2画布面积设置 1 3软件显示设置 1 4布局显示设置 1 5格点设置 1 6大十字光标设置 1
  • 什么场景应该用 MongoDB ?

    月初在云栖社区上发起了一个 MongoDB 使用场景及运维管理问题交流探讨 的技术话题 有近5000人关注了该话题讨论 这里就 MongoDB 的使用场景做个简单的总结 谈谈什么场景该用 MongoDB 很多人比较关心 MongoDB 的适
  • 华为OD机试(JAVA)真题 2023(汽水瓶\随机数\进制转换)

    系列文章目录 文章目录 系列文章目录 前言 一 1 汽水瓶 二 明明的随机数 前言 一 1 汽水瓶 某商店规定 三个空汽水瓶可以换一瓶汽水 允许向老板借空汽水瓶 但是必须要归还 小张手上有n个空汽水瓶 她想知道自己最多可以喝到多少瓶汽水 数
  • 运维岗位面试被问到的问题

    一 tcp ip 三次握手具体过程 二 静态路由动态路由里面有哪些协议 三 ip地址分类 四 iptabled 五 linu系统和windows系统的区别 六 linux软连接与硬链接的区别 七 Linux命令 八 如何将一个用户添加到某一
  • cocosCreator 之 ScrollView

    版本 3 4 0 参考 ScrollView组件 简介 ScrollView组件作为滚动容器来使用 它的实现通过ScrollBar组件来展示内容的位置和Mask组件显示指定区域 来保证有限的区域内显示更多的内容 它的构成部分 ScrollB
  • 史上功能最全的Java权限认证框架

    文章目录 Sa Token是什么 Sa Token 能做什么 代码示例 官网地址 sa token 使用示例 SpringBoot 环境 1 创建项目 2 设置jar包依赖 3 配置文件 4 启动类 5 运行 Sa Token是什么 sa
  • LeetCode 101:和你一起你轻松刷题(python版) 第 1 章 题目分类

    LeetCode 101 和你一起你轻松刷题 python版 注 作者 高畅 Chang Gao 原书为c 版本 解题思路清晰 知识点全面 是一本好书 翻译成python版本的解法可能未必是最优解法 由于本人是新手小白 算法实现是第一步 优
  • stm32+lwip(四):网页服务器测试

    ST官方有lwip的例程 下载地址如下 https www st com content st com en products embedded software mcus embedded software stm32 embedded
  • ubuntu 22.04 升级openssh9.4p1 ,openssl3.1.2,zlib1.2.13

    参考 https blog csdn net weixin 37534043 article details 120822689 https blog csdn net xujiamin0022016 article details 878
  • C++设计模式---组合模式

    文章目录 使用场景 组合模式的定义 安全组合模式 使用场景 组合模式和类与类之间的组合是不同的概念 组合模式主要用来处理树形结构的数据 如果要表达的数据不是树形结构 就不太适合组合模式 比如我们有一个目录结构 这个目录我们把它绘制成树形结构
  • python中sha1 md5等用法

    import hashlib sha1 hashlib sha1 sha1 update a encode utf 8 sha1 update b encode utf 8 sha1 update c encode utf 8 等同于 sh
  • Linux下more命令高级用法

    我们在 Linux 环境下工作时 每天肯定会跟各种各样的文本文件打交道 这些文件 有时候会非常长 无法在一屏的空间内显示完全 所以 在查看这种文件时 我们需要分页显示 这时 我们就可以使用 more 命令 more 命令基本用法 more
  • 上传文件至svn

    1 软件管理搜索下载tortoiseSVN 2 在D盘新建一个文件夹 重命名 最好与SVN上要上传的目录名字保持一致 自己取也可以 3 选中文件夹右键点击SVN checkout 弹出框标红的填写XXSVN上的地址 拉取远程仓库的文件 完成
  • 游戏贪吃蛇计分c语言,C语言实现贪吃蛇游戏(命令行)

    这是一个纯C语言写的贪吃蛇游戏 供大家参考 具体内容如下 include include include include include define SNAKE LENGTH 100 定义蛇的最大长度 define SCREEN WIDE
  • C++中的STL中map用法详解

    C 中的STL中map用法详解 Map是STL的一个关联容器 它提供一对一 其中第一个可以称为关键字 每个关键字只能在map中出现一次 第二个可能称为该关键字的值 的数据 处理能力 由于这个特性 它完成有可能在我们处理一对一数据的时候 在编
  • 我们规定对一个字符串的shift操作如下:

    shift ABCD 0 ABCD shift ABCD 1 DABC shift ABCD 2 CDAB 换言之 我们把最左侧的N个字符剪切下来 按序附加到了右侧 给定一个长为n的字符串 我们规定最多可以进行n次向左的循环shift操作