循环单词 java

时间:2021-10-03 00:29:42

链接:https://www.nowcoder.com/questionTerminal/9d5fbe7750a34d0b91c73943f93b2d7d
来源:牛客网

如果一个单词通过循环右移获得的单词,我们称这些单词都为一种循环单词。 例如:picture 和 turepic 就是属于同一种循环单词。 现在给出n个单词,需要统计这个n个单词中有多少种循环单词。

输入描述:
输入包括n+1行:
第一行为单词个数n(1 ≤ n ≤ 50)
接下来的n行,每行一个单词word[i],长度length(1 ≤ length ≤ 50)。由小写字母构成
输出描述:
输出循环单词的种数
输入例子:
5
picture
turepic
icturep
word
ordw
输出例子:
2

方案一:(缺点时间复杂度高)
遍历输入的字符串,将未出现过(以及其循环右移的衍生字符串都未出现)的字符串添加到set中。
import java.util.Scanner;
import java.util.Set;
import java.util.HashSet;
//字符串循环右移的属于一类,问有多少类
public class Main{
public static void main(String[]args){
Scanner sc = new Scanner(System.in);
Set<String> set = new HashSet<String>();
int num=sc.nextInt();
sc.nextLine();
for(int i=0;i<num;i++){
String a=sc.nextLine();
if(set.contains(a)) continue;
String b=change(a);
while(!b.equals(a)){
if(set.contains(b)) continue;
b=change(b);
}
if(b.equals(a)){
set.add(a);
}
}
Object count[]=set.toArray();
System.out.println(count.length);
} public static String change (String a){
String b=a.substring(a.length()-1)+a.substring(0,a.length()-1);
return b;
}
}

方案二:(改进)

遍历输入的字符串,如果从未出现则将其以及其所有的右移衍生字符串均添加到set中,并且计数加1.

import java.util.Scanner;
import java.util.Set;
import java.util.HashSet;
public class Main{
public static void main(String[]args){
Scanner sc = new Scanner(System.in);
Set<String> set = new HashSet<String>();
int num=sc.nextInt();
sc.nextLine();
int count=0;
for(int i=0;i<num;i++){
String a=sc.nextLine();
if(!set.contains(a)){
count++;
set.add(a);
String b=change(a);
while(!b.equals(a)){
set.add(b);
b=change(b);
}
}
}
System.out.println(count);
} public static String change (String a){
String b=a.substring(a.length()-1)+a.substring(0,a.length()-1);
return b;
}
}

循环单词 java的更多相关文章

  1. lintcode671 循环单词

    循环单词   The words are same rotate words if rotate the word to the right by loop, and get another. Cou ...

  2. 循环遍历Java字符串字符的规范方法——类似python for ch in string

    比如我将string作为CNN 文本处理输入: float [] input = new float[maxLength]; // 1 sentence by maxLenWords // int[] ...

  3. 循环报数 Java实现

    输入1个数字和多个字符,中间均以空格隔开.假设数字取值为m(范围1~9),后面字符个数为n.假设n个字符围成一圈,从第一个字母开始循环报数,当数到m以后,第m个字母就出列,直到这n个字母全部出列.最后 ...

  4. js的for in循环和java里的foreach循环的差别

    js里的for in循环定义例如以下: for(var variable in obj) { ... } obj能够是一个普通的js对象或者一个数组.假设obj是js对象,那么variable在遍历中 ...

  5. Vue&period;js——循环(Java、JSTL标签库、数据库)

    一.Vue.js循环 Vue.js循环要使用 v-for 指令. v-for 指令需要以 student in StudentList 形式的特殊语法使用, StudentList 是源数据数组并且s ...

  6. 统计单词Java

    功能0:输出某个英文文本文件中 26 字母出现的频率,由高到低排列,并显示字母出现的百分比,精确到小数点后面两位. 功能1:输出文件中所有不重复的单词,按照出现次数由多到少排列,出现次数同样多的,以字 ...

  7. 洛谷P1050 循环【java大数】

    题目:https://www.luogu.org/problemnew/show/P1050 题意:给定一个数$n$,问$n$的幂次的最低$k$位的循环节是多少. 思路:这真是我做过最难的java大数 ...

  8. Web循环监控Java调用 &sol; Java调用&period;net wcf接口

    背景介紹 (Background Introduction) 目前有一些报表客户抱怨打不开 报表执行过程过长,5.8.10秒甚至更多 不能及时发现和掌握服务器web站点情况 用戶需求(User Req ...

  9. 【spring】循环依赖 Java Vs Spring

    菜瓜:水稻,这次我特意去看了java的循环依赖 水稻:哟,有什么收获 菜瓜:两种情况,构造器循环依赖,属性循环依赖 构造器循环依赖在逻辑层面无法通过.对象通过构造函数创建时如果需要创建另一个对象,就会 ...

随机推荐

  1. html BOM、DOM

  2. 使用百度UMeditor富文本编辑器,修改自定义图片上传,修改源码

    富文本编辑器,不多说了,这个大家应该都用到过,至于用到的什么版本,那就分很多种 CKEditor:很早以前叫FCK,那个时候也用过,现在改名了,比较流行的一个插件,国外很多公司在用 UEDITOR:百 ...

  3. Programming Collective Intelligence

    最近正在拜读 O'reilly出版的Programming Collective Intelligence,准备研究研究搜索引擎了,童鞋们,到时候会考虑公布源码哦!

  4. 发送trim值

    发送寄存器和地址上的所有值 uart_send(0xa1); uart_send(*((char code*)0x2001)); uart_send(*((char code*)0x2002)); u ...

  5. springcloud~配置中心实例搭建

    server端 build.gradle相关 dependencies { compile('org.springframework.cloud:spring-cloud-config-server' ...

  6. BELLMEN-FORD普通

    #include <iostream> using namespace std; int m, n, u[100010], v[100010], w[100010];int check;i ...

  7. cmd输出控制台传递的参数

    public class Test2{ public static void main(String[] args){ System.out.println(args[0]); System.out. ...

  8. js-数字、字符串、布尔值的转换方式

    来自JavaScript秘密花园 1.转换为字符串 '' + 10 === '10'; // true 将一个值加上空字符串可以轻松转换为字符串类型. 2.字符串转换为数字 +'010' === 10 ...

  9. dos常用命令使用说明

    cd 改变当前目录 sys 制作DOS系统盘 copy 拷贝文件 del 删除文件 deltree 删除目录树 dir 列文件名 diskcopy 制磁盘 edit 文本编辑 format 格式化磁盘 ...

  10. linux&sol;unix 段错误捕获&lowbar;转

    转自:linux/unix 段错误捕获[续] 本文为“在C/C++中捕获段错误,打印出错的具体位置”的续篇,进一步解决涉及动态链接库的情况.   背景知识: ·linux/unix下动态链接库的基本原 ...