拆解排序问题

后缀子串排序

题目:

对于一个字符串,将其后缀子串进行排序,例如grain 其子串有: grain rain ain in n 然后对各子串按字典顺序排序,即: ain,grain,in,n,rain

解题思路:

先将字符串经行拆解,然后将拆解后的字符串进行字典顺序排序

代码:

import java.util.Arrays;
import java.util.Scanner; public class Main {
public static String[] sT(String s) {
String[] result = new String[s.length()];
for (int i = 0; i < s.length(); i++)
result[i] = s.substring(i); // 从i到末尾截取字符串
Arrays.sort(result); // 进行字典顺序排序
return result;
} public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String s = sc.nextLine();
String[] result = sT(s);
for (String c : result) {
System.out.println(c);
}
}
}
}

子串计算

题目:

给出一个01字符串(长度不超过100),求其每一个子串出现的次数。对每个字符串,输出它所有出现次数在1次以上的子串和这个子串出现的次数,输出按字典序排序。

例如:10101 ,输出结果为:

0 2
01 2
1 3
10 2
101 2

解题思路:

将字符串进行拆解,拆解方式不同于上一题,拆解结果为所有相邻的子串。再将拆解子串经行排序,然后输出。

代码:

import java.util.*;

public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
Map<String, Integer> count = new HashMap<>();
String s = sc.nextLine();
for (int i = 0; i < s.length(); i++) {
for (int j = i + 1; j <= s.length();j++) {
String temp = s.substring(i, j); // substring 范围(i—(j-1))
if (count.get(temp) == null) { // 查看该子串是否出现过,否则将其以key值添加到map中,value值为1
count.put(temp, 1);
} else {
int value = count.get(temp); // 是则提取该key值的value值,并使value值加1
count.put(temp, ++value);
}
}
}
Collection<String> keys = count.keySet(); // 提取所有的key值
List<String> list = new ArrayList<>(keys);
Collections.sort(list); // 无第二个参数,默认升序
for (String str : list) {
if (count.get(str) > 1) {
System.out.println(str + " " + count.get(str));
}
}
}
}
}

附:吉他曲

流星——岸部真明

以上

最新文章

  1. LSM Tree存储组织结构介绍
  2. windows Server 2008各版本区别详解
  3. 基于S5PC100裸机程序之SPI(上)
  4. [状压dp]HDU3001 Travelling
  5. 浅谈iOS开发的协议(protocol)和代理(delegate)
  6. oracle使用口令文件验证和os验证
  7. A Simple Problem with Integers(线段树,区间更新)
  8. AFNetworking 进行网络监测
  9. Cracking the code interview
  10. FTP&amp;samba 服务简单部署
  11. 用php过滤文字中的表情字符
  12. 整理volatile相关知识点
  13. Codeforces 1045B Space Isaac
  14. spring基础知识,未完待续
  15. PHP后台评论 接口
  16. Android getScrollX()详解
  17. HTML开发之(块级标签,行内标签,行内块标签)
  18. 【trie树】【P4551】 最长异或路径
  19. [转]SQL Server 「逾时过期」的处理方式
  20. e657. 用直线和曲线绘制图形

热门文章

  1. l5213. 玩筹码
  2. WTL之手动编写框架窗口
  3. Python3中的bytes和str类型
  4. React 组件通讯
  5. Spring Boot -- Spring Boot之@Async异步调用、Mybatis、事务管理等
  6. enlipse 快捷键
  7. 实验吧-密码学-Decode、困在栅栏里的凯撒
  8. Django实现websocket
  9. ORACLE 将一个库的部分值带条件插入到另外一个库
  10. 3 ~ express ~ 静态文件托管