度度熊找子串(百度2017秋招真题)--java

xiaoxiao2021-02-28  143

http://exercise.acmcoder.com/online/online_judge_ques?ques_id=3364&konwledgeId=40

度度熊找子串(百度2017秋招真题)

题目描述

度度熊收到了一个只有小写字母的字符串S,他对S的子串产生了兴趣,S的子串为S中任意连续的一段。他发现,一些子串只由一种字母构成,他想知道在S中一共有多少种这样的子串。 例如在串”aaabbaa”中,度度熊想找的子串有”a”,”aa”,”aaa”,”b”,”bb”五种。

(本题只考虑子串的种数,相同的子串在多个位置出现只算一次)

输入 输入只有一行,一个字符串,长度不超过100000,只由小写字母组成 样例输入 aaabbaa 输出 输出一行,符合要求的子串种数 样例输出 5 时间限制 C/C++语言:1000MS其它语言:3000MS 内存限制 C/C++语言:65536KB其它语言:589824KB 选择语言: Java8 编译器环境说明

import java.util.HashSet; import java.util.Scanner; import java.util.Set; /** *http://exercise.acmcoder.com/online/online_judge_ques?ques_id=3364&konwledgeId=40 */ public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String string = in.nextLine().trim(); System.out.println(numOfSubString(string)); } private static int numOfSubString(String string) { int index = 0; Set<String> set = new HashSet<>(); for(int i = 0;i<string.length();i++) { index = string.charAt(index)==string.charAt(i)?index:i; set.add(string.substring(index, i+1)); } return set.size(); } }
转载请注明原文地址: https://www.6miu.com/read-17866.html

最新回复(0)